根据子类选择元素

时间:2010-09-07 20:52:21

标签: css css-selectors

CSS中有没有办法选择一个具有给定类的子元素的元素?

我想将样式应用于<ul>列表,其中<li>具有特定的类。

4 个答案:

答案 0 :(得分:12)

使用css是不可能的,因为你是通过选择一个基于后代的祖先来对抗级联的。

我能提供的最好的建议是jQuery方法:

$(document).ready(
  function() {
    $('.givenClassName').parent().addClass('something');
  }
);

这会找到带有givenClassName的元素,然后选择其父元素并将类something添加到该元素。

@Blaenk提出了一种替代方法,它更通用(他的方法不要求祖先元素是你选择的元素的父元素)。

显然其他JS库和JS本身都可以达到同样的效果,虽然我不能提供特别的建议,因为我还只是熟悉JS并且主要使用jQuery(为什么是的,我<我自己感到羞耻......)。

答案 1 :(得分:5)

据我所知,遗憾的是,CSS无法实现。

如果您可以使用Javascript,jQuery可以使用closest()方法执行此操作。它的documentation甚至列出了一个与你非常相似的例子:选择一个具有特定类的li的ul。

$("li.some-class").closest("ul");

请原谅我,如果这不是在jQuery中执行此操作的最佳方式。我实际上是jQuery的新手,这是我到目前为止学到的方法之一,看起来很合适。

答案 2 :(得分:2)

没有。 CSS Cascade不允许使用这种选择器。

在这种情况下,最好的解决方案是使用JavaScript修改DOM或更改生成的HTML以将类添加到ul标记。

答案 3 :(得分:-4)

ul li {
    /* styles */
}

这是你要求的吗?