【发布时间】:2011-09-30 02:23:18
【问题描述】:
有可能吗?如果没有,有没有办法用 jQuery 做到这一点?
【问题讨论】:
-
不知道这是在问什么。你可以发布示例吗?
标签: css css-selectors
有可能吗?如果没有,有没有办法用 jQuery 做到这一点?
【问题讨论】:
标签: css css-selectors
很遗憾,这是不可能的。。忽略这个答案和look at spliters answer below。
如果可能的话,它看起来像......
ul li:last-child+li {...}
但这不起作用,因为 + 会选择 after last-child 的直接兄弟(当然,这没什么)。没有直接的 previous 选择器。
使用 jQuery 有不同的方法来实现这一点,性能最好的应该是......
var lastItems = $("#list li");
lastItems.slice(lastItems.length - 2).addClass("whatever");
【讨论】:
:nth-child(),而是:nth-last-child()。
ul li:nth-last-child(-n+2) {}
使用 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
【讨论】:
nth-last-child 也是可能的,但 nth-child 不可能,因为它从一开始就选择,而 OP 想从最后选择。
:last-child,
:nth-last-child(2) {
ruleset
}
也会播放。
【讨论】:
对我来说是这样的:
li:not(:nth-last-child(-n+2))
【讨论】: