不是jQuery选择器
此Meteor客户端代码尝试在不是jQuery选择器,jquery,meteor,Jquery,Meteor,此Meteor客户端代码尝试在表单上应用jQuery.serializeArray,但不应用类为非活动的元素 const inputData = $('form:not[class="inactive"]').serializeArray(); 为什么它会失败?如何修复它?感谢使用:非选择器时,请记住以下几点: 使用()表示:不使用而不是[] 不要选择class作为属性,请使用类选择器 当您要选择表单中的元素时,在表单和之间需要有一个空格:not,否则您将只选择没有.inactive类的所有表
表单
上应用jQuery.serializeArray
,但不应用类为非活动的元素
const inputData = $('form:not[class="inactive"]').serializeArray();
为什么它会失败?如何修复它?感谢使用
:非选择器时,请记住以下几点:
使用()
表示:不使用而不是[]
不要选择class
作为属性,请使用类选择器
当您要选择表单
中的元素时,在表单
和之间需要有一个空格:not
,否则您将只选择没有.inactive类的所有表单
这将是一个正确的元素选择器:
const inputData = $('form :not(.inactive)');
要正确使用serializeArray
,请查看@T.J.Crowder的答案 基本上,要将元素排除在外,需要禁用它们或删除它们的名称
。例如:
const inputData = $('form')
.find('.inactive')
.prop("disabled", true)
.end()
.serializeArray();
即:
- 查找所有形式
- 查找其中的非活动元素
- 确保这些元素被标记为禁用
- 返回表单(
.end()
)
- …并序列化它们的元素
关于您尝试使用的:非选择器,出现了一些问题:
您在:not
条件周围使用了[]
而不是()
使用类时,应该使用类选择器,而不是属性选择器
您将其应用于表单
,而不是表单中的元素
但是,由于您需要在表单上调用序列化数组
,因此我们需要一种完全不同的方法(如上所述)。您包含的错误消息不是来自您的代码included@Jamiec谢谢。删除它。实际上,还有第三件事:它需要在表单
之后留一个空格,正如OP所说的“但不是类处于非活动状态的元素”。现在的内容将不会选择具有该类的表单。事实上,尽管在细节上是正确的,但这实际上并没有回答这个问题。