2010-04-20 34 views
87

我只是在看jQueryUI的按钮插件,并注意到这jQuery选择器的多个参数?

$("button, input:submit, a", ".demo").button(); 

我从来没有见过这样的事情。这是否像一个jQuery选择器中的多个选择?

回答

137

第二个参数(".demo"在你的例子)是上下文,基本上您的选择被限制为仅匹配所确定的上下文的后代:

$(expr, context) 

只是相当于使用find方法:

$(context).find(expr) 

给看看到jQuery function的文档:

选择语境

默认情况下,选择器DOM内履行 搜索开始于 文档根。但是,通过使用$()函数的可选第二个 参数,可以为 搜索提供 替代上下文。对于 例如,如果一个回调函数 之内,我们希望做一个元素进行搜索, 我们可以限制搜索:

$('div.foo').click(function() { 
    $('span', this).addClass('bar'); 
    // it will find span elements that are 
    // descendants of the clicked element (this) 
}); 

另请注意,您发布"button, input:submit, a"选择,被称为Multiple Selector,和您可以指定任意数量的选择器,将它们合并为一个结果,只需用逗号分隔即可。

+0

酷永不知道。当我想限制类似部门的说法,所以它不会搜索整个页面,我只是做了一些像$('#id .class') – chobo2 2010-04-20 03:22:41

+0

这真的是从你以为会看到源代码的东西倒退。我期望第一个参数是超级类,接下来是子类,并将其缩小。呃,好吧。 – light24bulbs 2013-06-03 18:12:04

+2

如果我定义一个上下文,浏览器会更快吗? – andufo 2015-08-03 20:12:05