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

标签 jquery css dom

我想在除当前容器之外的所有容器中使用特定类来处理所有其他 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'),我想设置(实际上是 重置)类 .dcolor 在其他两个元素中,即选择器 $('.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/

相关文章:

javascript - 如何使用 Jquery 将用户从确认框中的输入框中移开?

javascript - 在 MVC Ajax..BeginForm 部分回发后运行 Javascript

html - Photoset 之间的边距

javascript - 如何在不使用 ID 的情况下在 Polymer 中选择节点?

python - 支持类 DOM 访问的最 Pythonic XHTML/HTML 解析器/生成器/模板模块是什么?

jquery - 响应表

javascript - 需要根据从 jsp 中的 Controller 传递的变量来选中/取消选中页面加载时的复选框

html - y 滚动时元素的对齐方式

javascript - JQuery 在 IE 和 Chrome 中的工作方式不同

ruby - Nokogiri 等效于 jQuery closest() 方法,用于在树中查找第一个匹配的祖先