鉴于页面某处的此 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。
编辑
我不知道起始 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>
新的jsfiddle 在这里。
解决方案
所以最终的解决方案是这样的:
$('#start').find('.buttons:not("#start div.myControl div.buttons ")')
.css('color','red');