选择除了类的子项之外的所有元素

时间:2013-10-03 15:15:18

标签: css css-selectors

如何选择除了具有某些类的元素中的div之外的所有<div>元素?

尝试:

 div :not(.test div)
 div:not(.test div) 

但不起作用!


编辑:

这是请求的HTML。

<div>
</div>

<span class="test">
 <div/>
</span>

1 个答案:

答案 0 :(得分:5)

div之后没有空格,因此:not与它相关,那么第二个div就是一个孩子,所以不是:not的一部分

div:not(.test) div {
    /* style */
}

<div class="test">
    <div></div>
</div>
<div>
    <div></div> <!-- gets selected -->
</div>

编辑:添加标记时,正确的版本为

div :not(.test) div {
    /* style */
}

<div>
    <span class="test">
        <div></div>
    </span>
    <span>
        <div></div> <!-- gets selected -->
    </span>
</div>

span:not(.test) div {
    /* style */
}

<span class="test">
    <div></div>
</span>
<span>
    <div></div> <!-- gets selected -->
</span>

因为您没有在原始问题中提及span,也没有指定跨度本身是否在div内。


在这种情况下,您还应该考虑在选择器中使用>来缩小范围。