3

我正在尝试使用 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如果我要过滤掉divthat are的所有孩子,为什么要选择第二个paragraphs?有没有办法防止这种情况发生?

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

4

2 回答 2

2

div *选择 div 的所有后代 iestrong p em然后:not(p)删除 thep所以你留下strongand em,现在em只有strong有一个em后代(the em)导致em第二个被选中div

于 2012-07-02T01:43:20.320 回答
0

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

div :not(p)>em

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

于 2012-07-02T01:52:28.553 回答