给定页面上某处的 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 应该是红色的。
在伪代码中,选择器将是
Take every element with class "buttons" but ignore everything in elements with class "myControl"
我准备了一个jsfiddle here 。
<小时/>编辑
我不知道起始 div 也可以有“myControl”类(试图尽可能地从我的项目中剥离代码以使其可读),所以实际上它看起来像这样(并且完整的 block 也可以使用 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');
最佳答案
你可以使用.not
$('#start').find('.buttons:not("div.myControl > div.buttons ")').css('color','red');
jsfiddle
关于jQuery 选择器所有元素不在子类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12796168/