如果我有以下标记
<div class='parent'>
<div class='first'>
First Child
<div class='second'>
Sub-child
</div>
</div>
</div>
下面是Jquery
$('.parent').children().css("color","#00b3ff");
结果它改变了两个孩子的颜色,因为我只想选择第一个孩子(而不是按班级)。
如果我有以下标记
<div class='parent'>
<div class='first'>
First Child
<div class='second'>
Sub-child
</div>
</div>
</div>
下面是Jquery
$('.parent').children().css("color","#00b3ff");
结果它改变了两个孩子的颜色,因为我只想选择第一个孩子(而不是按班级)。
像这样的东西怎么样:
$('.parent').children().css('color', '#00b3ff').find('> div').css('color', 'black')
通过使用“>”,规则将仅应用于直接子级,而不是所有子级(使用 .children() 时)
您需要做的另一件事是确保孩子不会继承父母的颜色,可以通过显式赋予它颜色来完成。
这是JSFIDDLE
你不能简单地这样做,css属性是由儿童继承的——所以如果你对它应用颜色,first
它就会被继承,second
因为它是first
由于我们无法将样式应用于文本节点,因此可能的解决方案是用元素包装文本节点并为其设置样式,如下所示
$('.parent > div').contents().filter(function(){
return this.nodeType == 3 && $.trim($(this).text()).length > 0;
}).wrap('<span />').parent().css('color', '#00b3ff');
演示:小提琴
var sel = $('.parent').children();
var old_color = sel.css('color');
sel.css('color', '#00b3ff');
sel.children().css('color', old_color);
No one post it, so, using only CSS:
.parent > div{
color:#00b3ff;
}
.parent div div {
color:black;
}
$('.parent').next('div').css("color","#00b3ff");
$(".parent > div:eq(0)").css("color","#00b3ff");
$(".parent > div:first").css("color","#00b3ff");
$('.parent').children( '.first' ).css("color","#00b3ff");