繁体   English   中英

获取单击列表项的位置

[英]Get the position of the clicked list item

可以说我们有这个标记:

<header>
   <nav>
      <ul>
         <li><a href="">first (not)</a></li>
         <li><a href="">second</a></li>
         <li><a href="">third</a></li>
        <!-- ... more here -->
      </ul>
   </nav>
</header>

我发现了有关.index()函数的信息

我正在尝试这样:

$('body').on('click','header :not(li:first-child a) a',function(e){
     e.preventDefault();
     alert($(this).parents('ul').find('li').index(this));
});

但它始终会警告: -1

我想念什么?

尝试让自己成为父母:

alert( $( this ).parent().index() );

我建议:

$('body').on('click','header li + li a',function(e){
     e.preventDefault();
     console.log($(this).closest('li').index());
});

JS小提琴演示

我认为问题在于index方法中的this as index返回当前匹配元素相对于提供给该方法的选择器的索引,并且有一个:仅一个当前/ this节点,以及b:该当前节点不在您要尝试的元素的同级对象中查找索引。 因此返回-1 (在JavaScript中,如果在给定数组中未找到该元素,则为传统结果)。

另外,我更改了您的选择器; 我以为您要查找不是第一个 lili的索引? 但是我可能误解了选择器或您的意图。

参考文献:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM