2010-04-20 72 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