CSS选择器的"foo包含bar"?

是否有一种方法可以使CSS选择器匹配以下内容?

All OBJECT elements
which have a PARAM element inside of them

选择器

OBJECT PARAM

不工作,因为它匹配的是PARAM,而不是OBJECT。我想对对象应用{display:none};把它应用到PARAMs上是没有用的。

(我知道我可以用jQuery - $("object param").closest("object") -和VanillaJS - document.querySelector("object param").closest("object") -来实现这一点,但我试图在页面上创建CSS规则。)

343992 次浏览

在CSS中选择所有包含PARAMOBJECT:

OBJECT:has(PARAM)

在CSS中选择所有具有直接子PARAMOBJECT:

OBJECT:has(> PARAM)

不,你正在寻找的将被称为父母选择器。CSS没有;它们已经被多次提出,但据我所知,没有任何现有或即将出台的标准包括它们。您是正确的,您需要使用jQuery之类的东西或使用额外的类注释来实现您想要的效果。

下面是一些类似的问题,结果也差不多:

唯一接近的是CSS3中的:contains伪类,但它只选择文本内容,而不是标签或元素,所以你不走运。

在jQuery中选择带有特定子结点的父结点的一个更简单的方法可以写成(使用:has()):

$('#parent:has(#child)');

是否有任何方法可以通过编程将类应用到对象?

<object class="hasparams">

然后做

object.hasparams