Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不是jQuery选择器_Jquery_Meteor - Fatal编程技术网

不是jQuery选择器

不是jQuery选择器,jquery,meteor,Jquery,Meteor,此Meteor客户端代码尝试在表单上应用jQuery.serializeArray,但不应用类为非活动的元素 const inputData = $('form:not[class="inactive"]').serializeArray(); 为什么它会失败?如何修复它?感谢使用:非选择器时,请记住以下几点: 使用()表示:不使用而不是[] 不要选择class作为属性,请使用类选择器 当您要选择表单中的元素时,在表单和之间需要有一个空格:not,否则您将只选择没有.inactive类的所有表

此Meteor客户端代码尝试在
表单
上应用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所说的“但不是类处于非活动状态的元素”。现在的内容将不会选择具有该类的表单。事实上,尽管在细节上是正确的,但这实际上并没有回答这个问题。