以第一个和最后一个“li”为目标在每个“ul”中
我想使用 jQuery 定位“ul”的第一个和最后一个“li”,并相应地向它们添加“first”和“last”类。
我知道使用 jQuery 如果它只是一个简单的“ul”,那么这很容易,但如果“ul”在父“ul”中嵌套了多个“ul”,我会很难找到正确的语法。
下面是 html 标记的示例:
<ul>
<li><a href="#">Top Level Item</a>
<ul>
<li><a href="#">First Sub-Item</a></li>
<li><a href="#">Last Sub-Item</a>
<ul>
<li><a href="#">First Sub-Sub-Item</a>
<li><a href="#">Last Sub-Sub-Item</a></li>
</li>
</ul>
</li>
</ul>
</li>
</ul>
我需要定位每个子 ul 的所有第一个和最后一个项目,并对每个项目应用一个类。
这是我一直在使用的,但它显然不起作用,因为它将类名仅应用于第一个“li”和最后一个“li”。
jQuery('.topmenu ul li ul li').first().addClass('first');
jQuery('.topmenu ul li ul li').last().addClass('last');
有什么建议吗?
I would like to target the first and last 'li' of a 'ul' using jQuery and add a class of "first" and "last" to them accordingly.
I know that using jQuery this is easy if its just a simple 'ul' but I am struggling with the right syntax if the 'ul' has more than one 'ul' nested in the parent 'ul'.
Here is an example of the html markup:
<ul>
<li><a href="#">Top Level Item</a>
<ul>
<li><a href="#">First Sub-Item</a></li>
<li><a href="#">Last Sub-Item</a>
<ul>
<li><a href="#">First Sub-Sub-Item</a>
<li><a href="#">Last Sub-Sub-Item</a></li>
</li>
</ul>
</li>
</ul>
</li>
</ul>
I need to target all of the first and last items of each sub-ul and apply a class to each of them.
Here is what I have been using but it is obviously not working as it is applying the class name to only the very first 'li' and the very last 'li'.
jQuery('.topmenu ul li ul li').first().addClass('first');
jQuery('.topmenu ul li ul li').last().addClass('last');
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我假设您显示的所有内容都位于“topmenu”类的内容内。如果它是唯一的,我建议将其更改为 ID,并将一个类应用于“第一个 ul”,这样就不必在算法上避免它。
http://jsfiddle.net/aBksB/2/
编辑:反映评论
I'll assume that everything you have shown is inside something with the class "topmenu". I would advise changing this to an ID if it's unique, and applying a class to the "first ul" so it doesn't have to be avoided algorithmically.
http://jsfiddle.net/aBksB/2/
EDIT: to reflect comment
这是使用以下代码的示例。
Here is an example using the code below.
尝试使用CSS选择器first-child和last-child:
try using css selector first-child and last-child:
使用
>
您可以指定直接子级,如下所示:$('ul>li').first()
$('ul>li' ).last()
ul>li
仅获取紧邻ul
节点内的li
节点。Using a
>
you can specify an imediate child, like this:$('ul>li').first()
$('ul>li').last()
ul>li
gets only theli
nodes imediately inside anul
node.我认为您想要
first-child
和last-child
:I think you want
first-child
andlast-child
:您可以尝试使用 :first 和 :last 选择器...
You might try using :first and :last selectors...
大多数时候,最后一个孩子的班级没有添加。如果您想将类添加到 li 的最后一个子级,则该脚本非常有效。
most of the time class to last child not added. The script works perfect if you want to add class to last child of li.