jQuery选择器所有不在子类中的元素

Mar*_*arc 3 jquery jquery-selectors

鉴于页面上某处的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>?
Run Code Online (Sandbox Code Playgroud)

我想用buttons红色标记所有元素:

$('#start').find('.buttons').css('color','red');?
Run Code Online (Sandbox Code Playgroud)

不是如果它们在里面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>?
Run Code Online (Sandbox Code Playgroud)

这里有新的jsfiddle.


所以最终的解决方案是:

$('#start').find('.buttons:not("#start div.myControl div.buttons ")')
.css('color','red');?
Run Code Online (Sandbox Code Playgroud)

Yog*_*ran 7

你可以使用.not

 $('#start').find('.buttons:not("div.myControl > div.buttons ")').css('color','red');?
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

http://jsfiddle.net/QqRuV/3/