我想在除当前容器之外的所有容器中使用特定类来处理所有其他 DOM 元素。我可以在 not
方法中遍历 sibling 吗?
示例代码结构(所有 div 都有一些内容在这里遗漏):
<div class="x">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>
</div>
<div class="y">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>
</div>
<div class="z">
<div class="a"></div>
<div class="b"></div>
<div class="c"></div>
<div class="d"></div>
</div>
编辑(在已经得到正确答案之后......):(抱歉,在将我的真实情况转移到这个示例结构时,我在问题中犯了一个错误):
当点击类 .b
的第二个元素时(即选择器 $('.y .b')
,我想设置(实际上是 重置)类 .d
的 color
在其他两个元素中,即选择器 $('.x .d')
和 $('.z .d')
。在实际情况中有更多的元素,我想避免太长(和所有不同的)选择器,否则我必须使用。
所以我在想类似的东西
$('.b').click(function(){
$('.d').not(siblings()).css('backgroundColor', '#d8a');
})
但这行不通。有什么建议吗?
最佳答案
在您的代码中,您试图调用独立的 siblings()
函数(我指的是不是 jQuery 对象上的函数),您可能会在siblings
未定义的 js 控制台。
要选择所有 .d
减去当前元素的兄弟元素,您可以这样做:JSFiddle
$('.d').not($(this).siblings()).css('backgroundColor', '#d8a');
这看起来就像您试图用您的 js 做的那样,并且将选择整个页面上 .d
的所有目标元素的直接兄弟。
如果您的实际 DOM 像示例一样简单,您可能只想选择父项的兄弟项的 .d
子项。可以这样做......
$(this).parent().siblings().children('.d').css('backgroundColor', '#d8a');
关于jQuery:我可以遍历 not() 方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36267676/