jquery选择器语法$([])和$(“*”)

时间:2012-01-30 03:39:43

标签: jquery jquery-selectors

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

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

有人可以澄清$( [] )的作用吗?它与$("*")相同吗?

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

4 个答案:

答案 0 :(得分:5)

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

换句话说,$([])没有任何结果,$('*')可以获得所有内容。

答案 1 :(得分:3)

如果您查看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对象中所有元素的值。不需要将它添加到其他对象中。

答案 2 :(得分:1)

  

jQuery(elementArray)

     

elementArray:一个数组,包含一组要包装的DOM元素   jQuery对象。

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

答案 3 :(得分:1)

看起来你指的是以下几行:

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

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

除了避免选择器调用之外,它与以下内容相同:

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

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

相关问题