2014-07-08 26 views
0

方法鏈:jQuery對象指數忽略jQuery.filter()

$("someSelector").filter("someMoreSpecificSelector").index() 

應返回的元素的索引jQuery的過濾陣列英寸

它實際上返回相同爲:

$("someSelector").index() 

即使jQuery的陣列變化較大時,濾波發生。

我在做什麼錯?

回答

1

作爲文件表示:

指數()

如果沒有參數被傳遞給所述的.index()的方法,所述返回值是指示所述第一元件的所述內的位置的整數jQuery對象相對於它的兄弟元素。

http://api.jquery.com/index/

所以這意味着你的代碼目前正在檢查它的兒童中的地位。所以,如果你的代碼看起來像:

<div> 
    <p> 
    </p> 
</div> 
<div> 
    <p id='yay'> 
    </p> 
</div> 

這2個片段將返回同樣的事情:

$('div p').index(); //0 
$('div p').filter('#yay').index(); //0 

.index()接受的說法。當傳遞一個DOM對象,你將擁有jQuery對象

如果的.index()調用元素的集合,DOM元素或jQuery對象傳遞的,裏面的.index對象的當前位置()返回一個整數,指示傳遞的元素相對於原​​始集合的位置。

所以,你可以使用:

var $collection = $("someSelector"); 
$collection.index($collection.filter('someMoreSpecificSelector'))