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

Mic*_*ach 385 css css-selectors

可能重复:
是否有CSS父选择器?

有没有办法使CSS选择器匹配以下?

All OBJECT elements
  which have a PARAM element inside of them
Run Code Online (Sandbox Code Playgroud)

选择器

OBJECT PARAM
Run Code Online (Sandbox Code Playgroud)

不起作用,因为它匹配PARAM,而不是OBJECT.我想将{display:none}应用于对象; 将它应用于PARAM是没用的.

(我知道我可以用jQuery - $("object param").closest("object")和VanillaJS - 来解决这个问题document.querySelector("object param").closest("object")- 但我正在尝试在页面上创建CSS规则.)

Mic*_*ene 271

不,你要找的东西将被称为父选择器.CSS没有; 它们被多次提出,但我知道没有现有或即将出现的标准,包括它们.你是正确的,你需要使用像jQuery之类的东西或使用额外的类注释来实现你想要的效果.

以下是一些类似的问题,结果相似:

  • 在选择器部分之前放置一个美元符号,因此它可能会干扰SCSS/SASS语法,很酷.为什么他们不使用多次提出的`<`符号,或`:parent`伪类,甚至是选择器部分之后的`!`符号?他们对我来说都比使用`$`符号更合乎逻辑...... (97认同)
  • JSYK,CSS父选择器将进入CSS4,因为能够选择选择器中的哪个元素通过在其前面放置一个美元符号来设置样式:`$ div> span`将选择具有span作为a的div直接的孩子. (79认同)
  • @MészárosLajosCSS不依赖于SCSS,他们没有义务这样做.无论选择哪种语法,我宁愿看到CSS变得足够强大,实际上不会使LESS/SCSS过时. (24认同)
  • 仅供参考,这现在存在于CSS Selectors Level 4规范中:[`:has()`](https://drafts.c​​sswg.org/selectors-4/#relational) (17认同)
  • 是的,我知道,PHP很多 (8认同)
  • 有关浏览器支持,请参阅http://caniuse.com/#feat=css-has (7认同)
  • 一年后,仍然没有雪茄. (3认同)

Tat*_*nen 101

唯一接近的是:containsCSS3中的伪类,但它只选择文本内容,而不是标签或元素,所以你运气不好.

在jQuery中选择具有特定子节点的父节点的简单方法可以写为(with :has()):

$('#parent:has(#child)');
Run Code Online (Sandbox Code Playgroud)

  • `$("#parent #child")`选择所有#child元素作为#parent的子元素.`$('#parent:has(#child)')`选择所有#child作为子项的#child元素. (85认同)
  • OP说他知道如何用jQuery做,但想要CSS (9认同)
  • @SpeedyNinja,然而答案包含比主题启动器更好的jQuery片段 (5认同)
  • 谢谢——但这与 $("#parent #child") 有什么不同? (2认同)
  • @ZachSaucier这个例子在某些情况下是有道理的.该网站可能有不同的页面,其中"#parent"有时包含"#child",有时则不包含.如果你只想用`#parent`元素做`#parent`元素,那么这是一种实现它的方法. (2认同)