考虑到页面上可能会有不同的 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
内部,则不应该更改颜色,因此只有“select this” divs应为红色。
伪代码选择器如下:
选择所有具有“buttons”类的元素,但忽略带有“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');
$(#start .buttons:not(.myControl .buttons))
。 - techfoobarmyControl
类,这会导致它不能正常工作(它在我的项目中,我没有意识到)... 那么也有可能解决这个问题吗?希望这是最后一次更改... :/ http://jsfiddle.net/marcgrabow/QqRuV/7/ - Marc$('#start').find('.buttons:not("#start div.myControl div.buttons ")').css('color','red');
请查看jsfiddle链接:http://jsfiddle.net/QqRuV/10/ - YogeshWaran