3

鉴于页面某处的此 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');​
4

3 回答 3

7

你可以使用 .not

 $('#start').find('.buttons:not("div.myControl > div.buttons ")').css('color','red');​

jsfiddle

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

于 2012-10-09T08:51:44.853 回答
2
$('#start').find('.buttons').filter(function(e) { return $(this).parent(".myControl").length < 1; }).css('color','red');​
于 2012-10-09T08:55:56.740 回答
0
$('#start').children('.buttons').css('color', 'red')
于 2012-10-09T08:53:01.230 回答