2013-03-22 153 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的这种层次结构之间的任何东西(任何标记)。

这会做.. :)