为什么我不能得到这个李的索引?

Cla*_*ire 0 html javascript jquery

我有一个很长的列表,需要获得其中每个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>
Run Code Online (Sandbox Code Playgroud)

我的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" )



});
Run Code Online (Sandbox Code Playgroud)

我的警报显示我的索引无效,因为它返回-1.但是我的语法正确(我认为)因为变量正在使用包含正确的元素.这是警报的输出:

 ul id: myUl
 the li: test
 index: -1
Run Code Online (Sandbox Code Playgroud)

那么为什么它会返回-1 ???

SLa*_*aks 5

index() 返回一组元素中元素的索引,而不是该集合中第一个元素的子元素.

您的theUl变量只包含一个元素 - <ul>标记.由于此集合没有您的<li>标记,因此index()返回-1.

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

您也可以编写thisLi.index()以返回<li>其直接父级的索引.

http://api.jquery.com/index