鉴于页面上某处的HTML(可能不同):
<div id="start">
<div>
<div class="buttons">select this</div>
<div class="myControl">
<div class="buttons">dont select this</div>
</div>
<div>
<div class="buttons">select this</div>
</div>
</div>
</div>
我想用类buttons
红色标记所有元素:
$('#start').find('.buttons').css('color','red');
但不如果它们在myControl
内,那么只有“选择此”div应为红色。
在伪代码中,选择器将是
使用类“按钮”获取每个元素,但忽略所有内容 在“myControl”类的元素中
我准备了 jsfiddle here 。
修改
我不知道启动div也可以拥有“myControl”类(试图尽可能地从我的项目中删除代码以使其可读),所以实际上它看起来像这样(并且完整的块也可以与myControl嵌套在更多的div中)。
所以不幸的是(对我原来的问题是正确的)答案在那种情况下不起作用,对不起!知道如何调整其中一个答案来解决这个问题吗?
<div class="myControl" id="start">
<div>
<div class="buttons">select this</div>
<div class="myControl">
<div class="buttons">dont select this</div>
</div>
<div>
<div class="buttons">select this</div>
</div>
</div>
</div>
解
所以最终的解决方案是:
$('#start').find('.buttons:not("#start div.myControl div.buttons ")')
.css('color','red');
答案 0 :(得分:7)
你可以使用.not
$('#start').find('.buttons:not("div.myControl > div.buttons ")').css('color','red');
的jsfiddle
答案 1 :(得分:2)
$('#start').find('.buttons').filter(function(e) { return $(this).parent(".myControl").length < 1; }).css('color','red');
答案 2 :(得分:0)
$('#start').children('.buttons').css('color', 'red')