项目的选择器NOT来自另一个项目

时间:2012-12-17 04:13:50

标签: css css-selectors

鉴于下面的HTML,您将如何选择不是.itemcontainer(s)的后代的所有.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>

谢谢!

2 个答案:

答案 0 :(得分:2)

我不知道在CSS选择器中排除这种情况的方法;但你可以为所有人定义一个规则,然后取消定义特定的规则。

.group .header .name {
    background-color: green;
}
.group .itemcontainer .header .name {
    background-color: inherit;
}

编辑:考虑到你想要实现的目标(从评论中得到我的答案),不要将它作为一个纯粹的CSS选择器更有意义,但确实如此jQuery的:

$('.group .header .name').filter(':not(.itemcontainer *)')​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​.click(onClick);

答案 1 :(得分:0)

我认为你要做的是:

.name:not(.itemcontainer .name)

但这不起作用,因为选择器:not()只接受简单的选择器。换句话说:我不认为您可以使用:not()选择器完成此操作,抱歉。