【问题标题】:jquery selector syntax $( [] ) and $("*")jquery 选择器语法 $( [] ) 和 $("*")
【发布时间】:2012-01-30 12:27:59
【问题描述】:

以下这行代码来自官方dialog/#modal-form example

allFields = $( [] ).add( name )

有人可以澄清$( [] ) 的作用吗?和$("*")一样吗?

让我感到困惑的另一件事是我没有看到allFields 被添加/附加到任何地方/任何对象,它只是被创建和修改。我错过了什么吗?

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    $([]) 创建一个空的 jQuery 对象,就像$() 一样。 $('*') 创建一个 jQuery 对象,其中包含与 CSS 选择器 * 匹配的所有元素,每个元素都将匹配。

    换句话说,$([]) 什么都得不到,$('*') 什么都得到。

    【讨论】:

      【解决方案2】:

      如果您查看doco for the jQuery() function - 通常被视为$() 的简写版本 - 您会发现它接受多种不同类型和参数组合。

      您询问的语法:

      $([])
      

      jQuery( elementArray ) 语法,它允许您传递一个 DOM 元素数组,其中返回将是包装这些元素的 jQuery 对象。通过传递一个空数组,您基本上会得到一个空的 jQuery 对象(就像您传递一个不匹配任何内容的选择器字符串一样,但不会先尝试查找匹配项效率低下)。

      allFields 创建时添加了三个 DOM 元素(其中 nameemailpassword 是在此之前创建为每个包含一个 DOM 元素的 jQuery 对象):

      allFields = $( [] ).add( name ).add( email ).add( password )
      

      大概是添加单个项目而不是仅仅做的好处:

      allFields = $("#name,#email,#password")
      

      是否还需要每个元素的单独对象,并且无论如何都会创建,因此无需费心通过查询字符串重新选择它们。

      让我感到困惑的另一件事是,我没有看到 allFields 被添加/附加到任何地方/任何对象,它只是被创建和修改,我错过了什么吗?

      在代码的另外两个地方提到它:

      allFields.removeClass( "ui-state-error" );
      // and, later
      allFields.val( "" ).removeClass( "ui-state-error" );
      

      这是相当标准的 jQuery 用法,用于删除类或设置 jQuery 对象中所有元素的值。无需将其添加到其他对象。

      【讨论】:

        【解决方案3】:

        jQuery(元素数组)

        elementArray: 一个包含一组 DOM 元素的数组,这些元素包含在一个 jQuery 对象。

        $( [] ) 创建一个包装在 jQuery 对象中的空集。

        【讨论】:

          【解决方案4】:

          您似乎指的是以下几行:

          var name = $( "#name" ),
              email = $( "#email" ),
              password = $( "#password" ),
              allFields = $( [] ).add( name ).add( email ).add( password )
          

          这里发生的事情是他们选择了三个元素,现在他们想要创建一个引用所有三个元素的 jQuery 对象。

          这与以下相同,只是它们避免了选择器调用:

             allFields = $("#name, #email, #password")
          

          本质上,他们创建了一个零元素 jQuery 对象,然后添加了 $([])、名称、电子邮件和密码,因此最终对象是长度为 3 的 jQuery 对象。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-02
            • 2015-11-29
            相关资源
            最近更新 更多