使用jQuery,我希望能够获得包含锚标记的HREF等于“#All”的li的索引。 (在这种情况下,正确的结果将是3)
<div id="tabs">
<ul>
<li><a href="#CPU"><span>CPU</span></a></li>
<li><a href="#Pickup"><span>Pickup</span></a></li>
<li><a href="#Breakfix"><span>Breakfix</span></a></li>
<li><a href="#All"><span>All</span></a></li>
</ul>
</div>
我试过了:
$("#tabs ul").index($("li a[href='#All']"))
......没有运气。我做错了什么?
答案 0 :(得分:27)
这应该这样做:
var index = $("#tabs ul li").index($("li:has(a[href='#All'])"));
<ul>
而不是所有想要获取索引的<li>
。<li>
选择器检查:has
元素:是否有您想要的链接,否则匹配的元素将是{{1 }本身而不是<a>
。Tested the above它给出了正确的答案,3,因为索引是从0开始的。
答案 1 :(得分:1)
我认为这是因为当你希望它匹配所有LI元素时,你的第一条规则是匹配所有UL元素。尝试:
$("#tabs ul li").index($("li a[href='#All']"))
答案 2 :(得分:1)
您希望在另一个上下文中获取元素的索引,作为一组元素的一部分。有关详细信息,请参阅API文档中的index(),特别是示例。
<script type="text/javascript">
$(document).ready(function(){
var which_index = $("#tabs ul li a").index($("a[href='#All']"));
alert(which_index);
});
</script>
<body>
<div id="tabs">
<ul>
<li><a href="#CPU"><span>CPU</span></a></li>
<li><a href="#Pickup"><span>Pickup</span></a></li>
<li><a href="#Breakfix"><span>Breakfix</span></a></li>
<li><a href="#All"><span>All</span></a></li>
</ul>
</div>
</body>