假设我们有这个标记:
<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
我错过了什么?
答案 0 :(得分:3)
尝试获得父母:
alert( $( this ).parent().index() );
答案 1 :(得分:0)
我建议:
$('body').on('click','header li + li a',function(e){
e.preventDefault();
console.log($(this).closest('li').index());
});
我认为问题是this
方法中的index
; as index
返回当前匹配元素的索引与提供给方法的选择器,并且只有:一个当前/ this
节点,b:当前在您尝试查找索引的元素的兄弟节点中,节点不。因此返回-1
(如果在给定数组中找不到元素,则在JavaScript中传统结果)。
另外,我改变了你的选择器;我假设你想要找到不是第一个 li
的{{1}}的索引?但我可能误解了选择器或你的意图。
参考文献: