Jquery 如何在递归菜单中仅选择顶级li?
如何仅选择第一级李?如果我做‘ulli’,它也会选择孩子。有没有办法使用CSS只选择顶层而不选择子级?如果不是,我可以使用jQuery,但是在这种情况下我又如何选择它呢Jquery 如何在递归菜单中仅选择顶级li?,jquery,html,css,dom,Jquery,Html,Css,Dom,如何仅选择第一级李?如果我做‘ulli’,它也会选择孩子。有没有办法使用CSS只选择顶层而不选择子级?如果不是,我可以使用jQuery,但是在这种情况下我又如何选择它呢 <ul> <li class="administration first"> <a href="/administration.aspx"><span>Administration</span></a> <ul&
<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>
-
如果您的ul有一个类或ID,您可以这样做:
$('#myList > li')
的jQuery选择器语法为: 子组合子(E>F)可以被认为是后代组合子(ef)更具体的形式,因为它只选择第一级后代
根据您拥有的结构,您可能还需要指定
ul
父元素。您需要位于第一个ul之上的元素或类,然后指定{parent selector}>ul>li
快速修复,如果可能,可以在外部ul上添加一个类名并使用$('ul.myClassName>li'))
另一个选项:$('ul>li:has(ul)
它将提供除最后一个嵌套级别之外的所有嵌套级别
$(".analytics:parent > li")
将适用于此特定情况,但最好给顶层一个类或id
比如:
$("#top-level-ul > li")
似乎比必须选择一个li
s的父项更容易理解('ul-li:first')$('ul-li:first>li”)。如何$('ul-li')。而不是('ul-ul-li')
如果需要,您可以进一步排除
ul-ol-li
和ol-ul-li
,您可以使用:
$('ul li:not(ul li ul li)')
这将仅选择顶层,但您还需要在第一个ul上使用某种id或类选择器,否则它可能会干扰页面内容等
// 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和更低版本中存在一些问题。使用JQuery遍历通常性能更好: 鉴于这是页面上的第一个UL:
$("ul").first().children();
假定父元素具有ID:
$("#TagID").find("ul").first().children();
$("#MyID").children();
鉴于UL有一个等级:
$("ul.myClass").children();
如果UL有一个ID:
$("#TagID").find("ul").first().children();
$("#MyID").children();
给出第一个LI具有特定类的示例:
$("li.administration").parent().children();
$('ul>li')
与$('ul li')
几乎相同,因为li标记总是在ul标记之后。两人都没有回答他的问题。在上面的列表中,你想要什么样的风格?这两个li:元素,这意味着最外层
的所有直系子女。下层选民应该体面,并给出理由。从“如果你看到错误的信息,就否决它。添加评论,指出什么是错误的。”投票回到零,为什么这个-1?@patrick-同意。如果我错了,我很想知道为什么,这样下次我必须回答一个问题时我才能是对的@迪伯斯特-谢谢你投票支持我。我很感激。投票可能来自您(简短的)原始答案$('ul li')
,但应该给出解释,并且在答案确定后应该删除。这将选择列表中的第一个li标记,而不是嵌套li的顶层。也许是对这个问题的误解?我的代码将返回ul的每个第一个孩子li,这不是他要求的吗?我没有否决你的投票,但OP想要所有孩子元素,只有最外层的
。这就是第一级的意思o) 我喜欢这个,因为它根本不需要我改变ul菜单,比如给它添加一个类。这个菜单是自动生成的,所以我没有太多的控制权。因此,用一个类将其包装为div非常有效。谢谢这是一个很好的解决方案,但是您也必须考虑页面中的其他无序列表。但是,应该为给定的标记工作,非常有创意。有人正在获得否决票(也请参见我的回答)+1支持你,因为我不喜欢无缘无故的否决票。我没有否决你,但这会给你每个
元素的子元素,包括嵌套元素。您需要添加一个说明符,以仅指示最外层的
。将提醒6
而不是4
,表示所有
元素都已被选中。