2011-07-20 54 views
0

我有一個很長的列表,需要得到它裏面的每個li的索引。這裏是我的html:爲什麼我不能得到這個李的索引?

<ul id="myUl" class="playlist playlist-one cf"> 

    <li id="test"><a href="#during-your-stay" class="playlist-link" >1. Privacy &amp; Dignity for all</a>[00:34]</li> 
    <li><a href="#during-your-stay" class="playlist-link" >2. Medicines</a>[00:44]</li> 
    <li><a href="#during-your-stay" class="playlist-link" >3. Allergies</a>[00:25]</li> 

</ul> 

我的jQuery:

$(".playlist-link").click(function(){ 

    var thisLi=$(this).parent(); 
    var theUl= $(thisLi).parent(); 
    var index =theUl.index(thisLi); 

    alert("ul id: " + theUl.attr('id') +"\n the li: " + thisLi.attr('id') +"\n index: "+index +"\n") 



}); 

我的警報顯示了我的指標是不工作,因爲它返回-1。然而,我有正確的語法(我認爲),因爲變量正在使用包含正確的元素。這裏是警報的輸出:

ul id: myUl 
the li: test 
index: -1 

那麼爲什麼它返回-1?

回答

5

index()返回一組元素中的一個元素的索引,而不是該集合中第一個元素的子元素的索引。

您的theUl變量恰好包含一個元素– <ul>標記。由於此套件沒有您的<li>標籤,因此index()返回-1

你可以寫theUl.children().index(thisLi)找到<ul>的孩子<li>的索引。

您也可以直接寫thisLi.index()以返回<li>的索引在其直接父級中。

http://api.jquery.com/index

+0

非常感謝,工作過一種享受。很有幫助 :) – Nicola