2011-06-08 126 views
7

在CSS(任何版本)中,有没有像jQuery中的:has()选择器一样的任何其他方式?CSS是否有类似jQuery的:has()?

jQuery(':has(selector)')

描述:选择哪个 包含 指定选择器相匹配的至少一种元素的元素。

http://api.jquery.com/has-selector/

+0

你想在has() - 中选择什么? – mightyplow 2011-06-08 12:50:27

+0

这不就是一个正常的孩子选择器吗?选择器中的规则将应用于所有匹配的元素。 – andyb 2011-06-08 12:51:33

+1

@andyb:':has()'是一个有条件的伪类,类似于':not()'。匹配的元素是围绕伪类的选择器,不在括号中。 – BoltClock 2011-06-08 12:53:21

回答

6

没有,没有。 CSS设计的方式不允许与祖先或前面的兄弟姐妹匹配的选择器; (>),继兄弟姐妹(~+)或特定的子女(:*-child)。唯一的祖先选择器是:root伪类,它选择文档的根元素(在HTML页面中,当然是html)。

如果您需要使用:has()将样式应用于要查询的元素,则需要向其添加CSS类,然后按该类添加样式as suggested by Stargazer712

+1

选择器4草案提到了一个主题选择器,尽管它与jQuery的':has()'选择器有不同的语义,如果它得到标准化和实施。 – BoltClock 2012-01-04 22:49:48

5

号来实现这一点的最佳方法是使用jQuery:

CSS文件:

.myAwesomeClass { 
    ... 
} 

js文件:

jQuery(':has(selector)').addClass("myAwesomeClass") 

其中selector是不管它是你最初试图匹配。

+2

*最好的*方法是组织你的CSS和标记,使它不必依靠JavaScript,即使CSS有时候有点痛苦。 – 2011-06-08 13:53:54