2013-06-06 79 views
6

我使用的代碼如$('.elem',elem)$('.elem',elem).tabs()

$(".elem")用於選擇具有該類的元素。

但逗號後的是什麼?它有什麼用處?

+2

這是[上下文選擇器](HTTP:// api.jquery.com/jQuery/#jQuery1),等同於'$(elem).find('。elem');' – billyonecan

+0

我已經使用jQuery近2年了b這並沒有引起太多的關注。 :) +1 –

回答

11

$('.elem',elem)$(elem).find('.elem')。實際上,這就是jQuery在它下面做的事情。它找到所有元素"elem",它們是elem元素的後代。

這涵蓋在the API documentation。從開始到結束閱讀這篇文章花費一個小時是非常值得的。那裏有各種有用的東西,這些東西並不爲人所知。 :-)(我並不是說這是其中的一個[我自己並不是一個粉絲,有些人],只是通常那裏有很多有用的東西。)

+0

似乎有沒有優勢使用上下文find(),這是真的嗎? –

+4

@roasted:對。 *好吧,我想有些人會指出它的字符少。 :-)但是當我說「這就是jQuery在它下面所做的」我的意思是:它確實檢測到你已經完成了'$('。elem',elem)'並且傳遞給'$(elem ).find( 'ELEM')'。所以'$('。elem',elem)'形式只是增加了另一個函數調用(不是那麼重要)。 –

0

第二個參數傳遞給jQuery函數定義了第一個選擇器的範圍或上下文。

它告訴jQuery在第二個參數提供的元素中查找所有具有elem類的元素。 elem之外的.elem類別的元素不會被選中。

鑑於下面的HTML:

<div id="included"> 
    <input/> 
    <input/> 
</div> 
<div id="excluded"> 
    <input/> 
    <input/> 
</div> 

這些選擇產生以下輸出:

console.log($("input", "#included").length); //2 only those inside included 
console.log($("input").length); //4 all inputs 

工作實施例:http://jsfiddle.net/LE6eE/

+0

我用.find()方法使用了選擇器。但是$(「。elem」,elem)比.find()好。那麼find()方法是否有用? – Natesan

+0

我不確定上下文說明符無法做到的任何事情。我猜'find'更直觀一些,更容易閱讀。 –