我想在除当前容器之外的所有容器中使用特定类来处理所有其他 DOM 元素。我可以在
not
方法中遍历到兄弟姐妹吗?
示例代码结构(所有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')
)时,我想在其他两个元素(即选择器color
)中设置(实际上是重置)类
.d
的$('.x .d')
和$('.z .d')
。在实际情况中,有更多的元素,我想避免使用太长(和所有不同的)选择器。
所以我在想类似的事情
$('.b').click(function(){
$('.d').not(siblings()).css('backgroundColor', '#d8a');
})
但这行不通。有什么建议吗?
在你的代码中,你试图调用一个独立的
siblings()
函数(我的意思是不是 jQuery 对象上的函数),你可能会在 js 控制台中看到一个引用错误,而 siblings
不是定义。
要选择所有
.d
减去当前元素的同级元素,您可以执行以下操作:JSFiddle
$('.d').not($(this).siblings()).css('backgroundColor', '#d8a');
这看起来正是您尝试使用 js 执行的操作,并且将选择整个页面上 .d
的
all除了目标元素的直接同级元素。
如果您的实际 DOM 像示例一样简单,您可能只想选择父级的兄弟级的
.d
子级。可以这样做......
$(this).parent().siblings().children('.d').css('backgroundColor', '#d8a');