22

我已经尝试了各种各样的事情,但我认为我变得太复杂了,甚至设法让 chrome 挂在我的选择器上。我确信有一个简单的方法可以做到这一点

classa仅在没有时选择classb并忽略它的最后一个实例

<div class="container">
    <div class="classa classb"></div> <!-- Dont Select -->
    <div class="classa"></div>  <!-- Select -->
    <div class="classa"></div>  <!-- Dont select last instance -->
</div>
4

4 回答 4

30

我相信您可以使用:not()选定的 CSS3 来执行此操作(此处为示例)

div.classa:not(.classb):not(:last-child) {}

但是,如您所知,没有多少浏览器支持这一点,所以 Javascript 可能是一种更简单的方法......

于 2012-05-27T10:02:41.300 回答
5
.classa:not(.classb):not(:last-child) {
    /* rules */
}

在 Firefox 12、Chrome 19、Safari 5 和 Opera 10 上测试。不幸的是,它不适用于(...猜猜谁?)IE。

于 2012-05-27T10:00:46.873 回答
1

尝试:

.classa:not(.classb):first-child {
    background: red;
}

不过,这在 IE 7 或 8 中不起作用。

于 2012-05-27T10:01:58.430 回答
0

使用CSS3 伪类

.classa:not(:last-child):not(.classb) {
  // some rules...
}
于 2012-05-27T10:00:32.863 回答