css3:not()只适用于直接孩子吗?

时间:2012-07-02 01:35:02

标签: css css3 css-selectors

我正在尝试使用css3的:not()选择器来选择某些元素,这些元素没有父元素,其中某个类作为其祖先。

标记很简单:

<div><strong><em>Please select me!</em></strong></div>

<div><strong><p><em>Please don't select me!</em></p></strong></div>

<div><p><em>Please don't select me!</em></p></div>

这是我正在使用的选择器:div *:not(p) em

小提琴:http://jsfiddle.net/cwxzH/

如果我过滤掉div div的所有孩子,为什么会选择第二个paragraphs?反正有没有阻止这个?

到目前为止,我只在IE9和FF13中测试过。

2 个答案:

答案 0 :(得分:2)

div *选择div的所有后代,即strong p em,然后:not(p)删除p,这样您就可以{ {1}}和strong,现在em em只有strong后代(em),em生成em在第二个div

上被选中

答案 1 :(得分:0)

也许这就是你要找的东西?它选择不是段落直接子节点的所有em元素:

div :not(p)>em

http://jsfiddle.net/cwxzH/1/