2013-03-22 150 views
2

我需要在DOM中設置一些子元素,但前提是它們不是特定元素的子元素。作爲一個例子,我需要大膽的跨度在此樣式子元素html元素

<span class="a"> 
<span class="b"> 
    <span class="c"> 
    bold this test 
    </span> 
</span> 
</span> 

但不是在這個

<span class="a"> 
<a class="SomeOtherclass"> 
    <span class="b"> 
    <span class="c"> 
    not bold 
    </span> 
    </span> 
</a> 
</span> 

我沒有對輸出的控制,所以我不能改變類名或結構

文本
+0

什麼是確切的條件?也就是說,文字何時應該大膽?只要你可以指定它,它主要就是編寫一個CSS選擇器或一組選擇器。 - 請注意,在給定的代碼中,類「c」中的元素在這兩種情況下都是類「b」中元素的子元素,所以這看起來似乎比簡單的父子關係更復雜一些。 – 2013-03-22 12:30:47

回答

7

你想使用直接後代選擇器>。選擇器a > b將僅在選擇直接後代(即子女)a

jsFiddle

.a > .b > .c { 
    font-weight:bold; 
} 
+2

我認爲這是問題的正確答案,但我也認爲並不是所有的用例都在這個問題中被揭示出來。這不是你的錯,所以+1。 – Fenton 2013-03-22 11:24:26

0

丹尼爾是正確

,如果你需要比

第二個選項你可以做到這一點

.c{ 
font-weight:bold; 
} 

.SomeOtherclass .c{ 
font-weight:normal; 
} 
0

你可以有特殊情況的壓倒一切的規則,因此,例如:

.c { 
    font-weight: bold; 
} 

.SomeOtherClass .c { 
    font-weight: normal; 
} 

我假定在正常情況下,你並不總是有A,B,C築巢 - 這就是爲什麼你除特殊情況外,都要求適用此規定。

0

可以使用兒童的選擇它...

例如,

.a { /*Your Style*/ } 
.a > .b { /*Your Style*/ } 
.a > .b > .c { /*Your Style*/ } 
0

這種情況的最好辦法是

span.a>a.SomeOtherclass>span.b>span.c{ 
    font-weight: bold 
} 

這將被應用到只有特定父母的特定類別。不在其他情況下。

如果要扭轉這種局面,那麼它會是這樣

span.a>span.b>span.c{ 
    font-weight: bold 
} 

它不會在情況下應用的添加在DOM的這種層次結構之間的任何東西(任何標記)。

這會做.. :)