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

标签 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>​

我想将所有带有 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>​

new jsfiddle here .

<小时/>

解决方案

所以最终的解决方案是这样的:

$('#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

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

关于jQuery 选择器所有元素不在子类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12796168/

相关文章:

javascript - 将动态数据添加到 UL jquery mobile 时出现问题

javascript - .click() jQuery 函数适用于一个 ID,但不适用于变量

javascript - 从左到右动画 div

javascript - 使用 javascript 和下拉菜单更改多个 textareas css 值?

jquery - 如何根据一个属性选择元素并排除具有另一属性的元素?

javascript - Jquery 不添加新的引导表

jquery - 如何使用 jQuery filter() 获取特定的 div 文本

jQuery :nth-child() append

jquery - 如何将灯箱 (prettyphoto) 应用于内容 div 中的所有图像?

javascript - 在 jQuery 选择器中混合逻辑 AND 和 OR