Css 不是从另一项派生的项的选择器
给定下面的HTML,如何选择所有不是.itemcontainer的后代的.name 类似于.group.header.name:not(从.itemcontainer派生) 我知道这可以通过jQuery或添加其他类轻松实现,但有没有纯css解决方案?我还没有找到一个“非后裔”选择器Css 不是从另一项派生的项的选择器,css,css-selectors,Css,Css Selectors,给定下面的HTML,如何选择所有不是.itemcontainer的后代的.name 类似于.group.header.name:not(从.itemcontainer派生) 我知道这可以通过jQuery或添加其他类轻松实现,但有没有纯css解决方案?我还没有找到一个“非后裔”选择器 <div class='group'> <!-- Any number of ancestors of any type --> <div class='header
<div class='group'>
<!-- Any number of ancestors of any type -->
<div class='header'>
<!-- Any number of ancestors of any type -->
<div class='name'>
SELECT ME!!!
</div>
</div>
<div class='body'>
<div class='itemcontainer'>
<div class='item1'>
<!-- Any number of ancestors of any type -->
<div class='header'>
<!-- Any number of ancestors of any type -->
<div class='name'>
DON'T SELECT ME!!!
</div>
</div>
<div class='body'>
...
</div>
</div>
...
</div>
</div>
...
</div>
选择我!!!
不要选择我!!!
...
...
...
谢谢 我不知道如何在CSS选择器中排除此类内容;但您可以为所有人定义一个规则,然后为特定的人取消定义
.group .header .name {
background-color: green;
}
.group .itemcontainer .header .name {
background-color: inherit;
}
编辑:考虑到您试图实现的目标(摘自我的答案的评论),不作为一个纯粹的CSS选择器,而是使用jQuery,这样做更有意义:
$('.group .header .name').filter(':not(.itemcontainer *)').click(onClick);
我认为你想做的是:
.name:not(.itemcontainer .name)
但这不起作用,因为选择器
:not()
只接受简单的选择器。换句话说:我认为使用:not()
选择器无法实现这一点,对不起。好主意。在本例中,我实际上试图将事件处理程序绑定到将显示/隐藏主体的组名,因此我必须在jQuery中排除它们。我只是通过在组名中添加一个单独的类(.group_expand)来处理这个问题,尽管我更希望有一种方法来指定所需的组(=o)