如何在递归菜单中只选择顶级li?

时间:2010-10-08 15:39:39

标签: jquery html css dom

如何只选择第一级li?如果我做'ul li',它也会选择孩子。有没有办法只选择顶级而不是使用CSS的孩子?如果没有,我可以使用jQuery,但在那种情况下如何选择呢?

<ul>
    <li class="administration first">
        <a href="/administration.aspx"><span>Administration</span></a>
        <ul>
            <li class="users first selected"><a href="/administration/users.aspx"><span>Users</span></a></li>
            <li class="forms last"><a href="/administration/forms.aspx"><span>Forms</span></a></li>
        </ul>
        <div style="clear: both;"></div>
    </li>
    <li class="analytics"><a href="/analytics.aspx"><span>Analytics</span></a></li>
    <li class="options"><a href="/options.aspx"><span>Options</span></a></li>
    <li class="system last"><a href="/system.aspx"><span>System</span></a></li>
</ul>

11 个答案:

答案 0 :(得分:14)

您需要在第一个ul之上的元素或类,然后指定{parent-selector} > ul > li

答案 1 :(得分:7)

$(“ul:first&gt; li”)。

答案 2 :(得分:4)

如果您的ul有类或ID,您可以这样做:

$('#myList > li')

答案 3 :(得分:2)

快速修复,如果可能的话,可以在外部ul上添加一个类名,然后选择$('ul.myClassName > li')

另一个选项:$('ul > li:has(ul)')除了最后一个嵌套级别外,它将为您提供所有选项。

答案 4 :(得分:2)

您可以使用:

$('ul li:not(ul li ul li)')

这将仅选择顶级,但您也希望在第一个ul上使用某种id或类选择器,否则它可能会干扰页面内容等。

答案 5 :(得分:1)

parent/child的jQuery选择器语法是:

$('ul > li')
  

子组合子(E> F)可以被认为是后代组合子(E F)的一种更具体的形式,因为它只选择第一级后代。

使用您拥有的结构,您可能还需要指定ul父元素。

答案 6 :(得分:1)

$(".analytics:parent > li")

适用于这种特定情况,但最好给顶级一个类或id。

类似的东西:

$("#top-level-ul > li")

似乎比选择li

之一的父级更容易理解

答案 7 :(得分:1)

$('ul li').not('ul ul li')如何? 如果需要,您可以做进一步说明以排除ul ol liol ul li

答案 8 :(得分:0)

如果有一个类

,则将类添加到第一个类
  // Add a class to the first UL element      
  $(".wrapper > ul").addClass("first-level");

  // Target the first classes first li child
  $(".wrapper ul.first-level > li:first-child");

ie8和更低版本存在一些问题。

答案 9 :(得分:0)

使用通常表现更好的JQuery遍历:

鉴于它是页面上的第一个UL:

$("ul").first().children();

鉴于父元素具有ID:

$("#TagID").find("ul").first().children();

鉴于UL有一个类:

$("ul.myClass").children();

鉴于UL有ID:

$("#MyID").children();

给出第一个LI具有特定类的示例:

$("li.administration").parent().children();

答案 10 :(得分:-2)

$('ul li:first')