2010-09-07 82 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