jQuery:我可以在 not() 方法中遍历吗

问题描述 投票:0回答:1

我想在除当前容器之外的所有容器中使用特定类来处理所有其他 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');
  })

但这行不通。有什么建议吗?

jquery css dom
1个回答
2
投票

在你的代码中,你试图调用一个独立的

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');
© www.soinside.com 2019 - 2024. All rights reserved.