【问题标题】:Traverse down to the next element down not immediate and of different type向下遍历到下一个元素,而不是立即和不同类型
【发布时间】:2017-03-01 10:59:53
【问题描述】:

所以在这样的html结构中:

    <a class="member-main">
      <!-- other divs and html elements -->
    </a>

    <div class="hidden-group-item">
      <!-- other divs and html elements -->
    </div>

我想将点击事件绑定到类.member-main 的html 元素,以便显示隐藏元素.hidden-group-item

页面中有很多成对重复的元素,所以我也想只在其各自的.member-main 下方显示.hidden-group-item

this previous question 的帮助下,我的目标是使用如下功能:

$('body').on('click', '.member-main', function() {
    $(this).next('.hidden-group-item')[0].toggleClass('hide')
});

我可以通过this 关键字(如果我在控制台记录它)获得点击关联的元素,但我似乎无法抓住那个让我遍历到隐藏组项的节点。

this 在这种情况下是如何工作的?实现这一目标的最有效方法是什么?

【问题讨论】:

标签: javascript jquery


【解决方案1】:

...[0] 返回一个 nodeElement 而不是具有函数toggleClass 的 jQuery 对象。试试这个:

$('body').on('click', '.member-main', function() {
    $(this).next('.hidden-group-item') // next is already returning one item so no need to try to access the first 
           .toggleClass('hide')
});

【讨论】:

  • 我认为你不需要.first()。要获取所有相似的元素,您必须使用 nextAll
  • @Rajesh 他说有很多,他只想要第一个(使用[0] 是合理的)。
  • @Rajesh Ah 没关系,只是看到他使用了next 而不是nextAll!我会编辑!
  • @ibrahimmahrir 非常感谢您的回答。我一定要睡着了,我想我试过很多次都没有成功。它工作正常,不,谢谢!我会在一秒钟内接受你的回答
【解决方案2】:

这按预期工作

关于 .next() 方法的文档说明如下:

获取集合中每个元素的紧随其后的兄弟 匹配的元素。如果提供了选择器,它将检索下一个 仅当它与该选择器匹配时才为兄弟。

因为您有 onClick 处理程序并且您将当前单击的元素选择为 $(this),那么 匹配的元素集 只是您单击的元素,因此 next() 调用获取.hidden-group-item 就在它下面。

示例

$('body').on('click', '.member-main', function() {
  $(this).next('.hidden-group-item').toggleClass('hide')
});
.hide {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<a class="member-main">
  <!-- other divs and html elements -->
  hello
</a>

<div class="hidden-group-item hide">
  <!-- other divs and html elements -->
  hidden
</div>

<a class="member-main">
  <!-- other divs and html elements -->
  hello
</a>

<div class="hidden-group-item hide">
  <!-- other divs and html elements -->
  hidden
</div>

<a class="member-main">
  <!-- other divs and html elements -->
  hello
</a>

<div class="hidden-group-item hide">
  <!-- other divs and html elements -->
  hidden
</div>

JSFiddle

【讨论】:

  • 请注意编辑器中的&lt;&gt; 图标。您可以使用它创建一个 sn-p(仅包含 HTML、css 和 JS)。
  • @Rajesh 谢谢!我只是认为人们在使用它时会粘贴该 sn-p 代码:D
猜你喜欢
  • 2010-10-01
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2014-11-28
  • 2011-07-09
  • 1970-01-01
相关资源
最近更新 更多