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

给定下面的HTML,如何选择所有不是.itemcontainer的后代的.name

类似于.group.header.name:not(从.itemcontainer派生)

我知道这可以通过jQuery或添加其他类轻松实现,但有没有纯css解决方案?我还没有找到一个“非后裔”选择器

<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)