2010-09-07 232 views
15

在CSS中选择具有给定类的子元素的元素有没有办法?选择基于子类的元素

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

+1

[CSS父选择器]的可能重复(http://stackoverflow.com/questions/1014861/css-parent-selector) – 2010-09-07 20:58:03

+0

是的,它确实是重复的。谢谢 – akonsu 2010-09-07 23:02:00

回答

11

这是不可能的与CSS,因为你通过选择一个祖先的基础上的后代对抗级联。

我可以提供,并建议最好是一个jQuery的方法:

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

此找到与givenClassName的元素,然后选择它的父元素,并增加了类something该元素。

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

很明显,其他JS库和JS本身都可以达到同样的效果,但我不能提供特别的建议,因为我仍然只是熟悉自己的JS和主要与jQuery(为什么是的,我am惭愧自己......)。

+0

+1设置样式,并且您的代码示例中有未封闭的引用。 – 2010-09-07 20:58:06

+0

@Jeff Rupert,感谢+1和更正(编辑更正)=) – 2010-09-07 21:00:26

+0

哈哈,我和你在Javascript和jQuery上一样。一直在阅读一些书,以加快速度。 Javascript:The Good Parts和jQuery in Action,第二版 – 2010-09-07 21:01:08

-3
ul li { 
    /* styles */ 
} 

这是你要求的吗?

+0

没有。我需要为ul – akonsu 2010-09-07 20:54:59

2

不可以CSS CSS级联不允许使用这种选择器。

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

4

据我所知,这不幸的是不可能与CSS。

如果你可以使用Javascript,jQuery有一个很好的方法来使用closest()方法。 documentation它甚至列出了一个非常类似于你的例子:选择一个具有特定类的li的ul。

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

请原谅我,如果这不是在jQuery中做到这一点的最好方法。我实际上对jQuery并不熟悉,这是迄今为止我学到的方法之一,而且看起来很合适。

+1

对于更通用的(比我的)jQuery方法+1。 – 2010-09-07 21:01:01