有可能吗?如果没有,有没有办法用jQuery做到这一点?
答案 0 :(得分:143)
CSS3可以实现。考虑标记:
<ul>
<li><a href="">First item</a></li>
<li>Second item</li>
<li><a href="">Test</a></li>
<li><a href="">Test</a></li>
<li><a href="">Pre-last item</a></li>
<li><a href="">Last item</a></li>
</ul>
要选择最后两个LI元素:
ul > li:nth-last-of-type(-n+2) {
background: green;
}
适用于所有当代浏览器,包括IE9,但不包括IE8及以下版本。要添加对这些浏览器的支持,您可以考虑使用Selectivizr.js
答案 1 :(得分:15)
:last-child,
:nth-last-child(2) {
ruleset
}
也会玩。
答案 2 :(得分:1)
不幸的是,这是不可能的。。忽略这个答案和look at spliters answer below。
如果有可能的话,那就像......
ul li:last-child+li {...}
但是这不起作用,因为+会选择最后一个孩子后的直接兄弟(当然没什么)。没有立即之前的选择器。
使用jQuery实现这一目标有不同的方法,最高效的是...
var lastItems = $("#list li");
lastItems.slice(lastItems.length - 2).addClass("whatever");
答案 3 :(得分:0)
对我来说是这样的:
li:not(:nth-last-child(-n+2))