获取UL内的元素索引

时间:2009-06-08 16:42:12

标签: jquery

使用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']"))

......没有运气。我做错了什么?

3 个答案:

答案 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>