不是jQuery选择器

时间:2016-08-01 09:56:32

标签: jquery meteor

此Meteor客户端代码尝试在.serializeArray上应用jQuery form,但不会在具有类inactive

的元素上应用
const inputData = $('form:not[class="inactive"]').serializeArray();

为什么失败以及如何解决?感谢

2 个答案:

答案 0 :(得分:2)

从根本上说,要将元素保留在serializeArray之外,您需要将其禁用或删除name。例如:

const inputData = $('form')
                      .find('.inactive')
                      .prop("disabled", true)
                      .end()
                      .serializeArray();

这:

  • 查找所有表格
  • 查找其中的非活动元素
  • 确保这些元素标记为disabled
  • 返回表单(.end()
  • ...并序列化他们的元素。

重新尝试使用的:not选择器,存在一些问题:

  1. 您已在[]条件

  2. 周围使用()代替:not
  3. 使用类

  4. 时,应使用类选择器,而不是属性选择器
  5. 您将其应用于form,而不是

  6. 中的元素

    但由于您需要在表单上调用serializeArray,我们需要完全不同的方法(如上所述)。

答案 1 :(得分:1)

使用:not选择器时,请注意以下事项:

  1. 使用()代替:not
  2. 不要选择[]作为属性,请使用类选择器
  3. 由于您要选择class内的元素,因此formform之间需要有空格,否则您只会选择:not
  4. 这将是一个正确的元素选择器:

    all forms without .inactive class

    要正确使用const inputData = $('form :not(.inactive)'); ,请查看@ T.J.Crowder的答案!