代码之家  ›  专栏  ›  技术社区  ›  Steve Horn

获取ul中元素的索引

  •  11
  • Steve Horn  · 技术社区  · 17 年前

    使用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 回复  |  直到 17 年前
        1
  •  27
  •   Paolo Bergantino    17 年前

    应该这样做:

    var index = $("#tabs ul li").index($("li:has(a[href='#All'])"));
    
    • 你选择了所有 <ul> 代替一切 <li> 你想把索引取出来。
    • 你得检查一下 <理工大学; 要素 有 通过使用 :has 选择器,否则匹配的元素将是 <a> 而不是 <理工大学; .

    Tested the above 它给出了正确的答案,3,因为索引是以0为基础的。

        2
  •  1
  •   robertc    17 年前

    我认为这是因为你的第一条规则是匹配所有的ul元素,当你想匹配所有的li元素时。尝试:

    $("#tabs ul li").index($("li a[href='#All']"))
    
        3
  •  1
  •   artlung    17 年前

    您希望在另一个上下文中获取元素的索引,作为一组元素的一部分。见 index() 在API文档中获取更多信息,尤其是示例。

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