javascript - 当更改事件有界的对象时,JQuery 的 .next() 似乎不起作用

标签 javascript jquery html

我有这个标记:

<div class="list-group-item participant-main">
   <i class="fa fa-chevron-down" id="chevron-for-div" aria-hidden="true"></i>
   <div class="row">
      <div class="col-sm-8">
         <h5 class="list-group-item-heading">A title</h5>
      </div>
      <div class="col-sm-4 list-group-item-quick-links ">
        <a href="#" />
        <a href="#" />
      </div>
   </div>
</div>

<div class='list-group-item hidden-group-item hide'>
   <div class="row">
      <div class="col-sm-8">
         <p class="list-group-item-text">
            Some text
         </p>
      </div>
      <div class="col-sm-4">
         <p class="list-group-item-text">
            More text
         </p>
      </div>
   </div>
</div>

以前,当通过以下代码单击 .participant-main 时,我使用 Jquery 取消隐藏/隐藏 .hidden-group-item:

$('body').on('click', '.member-main, .participant-main', function() {
  if ($(this).next('.hidden-group-item').hasClass('hide')) {
     $('.hidden-group-item').addClass('hide');
     $(this).next('.hidden-group-item').toggleClass('hide');
  }
  else {
     $(this).next('.hidden-group-item').toggleClass('hide');
  }
  $('.hidden-form-item').addClass('hide');
});

我正在向 .participant-main 添加一些链接,因此我无法再将点击事件绑定(bind)到整个 div,因此新链接可以并行工作。然后我尝试将 click 事件绑定(bind)到 div 内的特定元素,因此我将目标类移动到这样的特定元素。

<div class="list-group-item">
   <i class="fa fa-chevron-down participant-main" id="chevron-for-div" aria-hidden="true"></i>
   <div class="row">
      <div class="col-sm-8 participant-main">
         <h5 class="list-group-item-heading">A title</h5>
      </div>
      <div class="col-sm-4 list-group-item-quick-links ">
        <a href="#" />
        <a href="#" />
      </div>
   </div>
</div>

我希望它能起作用,但事实并非如此。

我不明白为什么会发生这种情况以及如何解决。据我了解 .next() 获取与指定选择器匹配的下一个元素。

最佳答案

由于您已经嵌套了元素,因此您应该使用 stopPropagation() 来阻止事件冒泡:

$('body').on('click', '.member-main, .participant-main', function(e) {
    e.stopPropagation();

    ...
});

希望这有帮助。

关于javascript - 当更改事件有界的对象时,JQuery 的 .next() 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42622228/

相关文章:

html - css float 在 IE 7 或 8 中不起作用

javascript - Html5 支持对复选框进行 SelectAll

javascript - md-button 内的 Font Awesome 图标对齐

php - Codeigniter ajax 分页搜索结果不起作用

jquery - 如何格式化 &lt;input type ="text"> 内的文本以创建像 gmail 这样的边界框/标签系统,SO

HTML5 & CSS3 响应式网站设计边距问题

javascript - 使用react-router-dom v6提交表单后如何重定向到另一个页面并传递数据?

java - 如何让 maven yuicompressor 和 tomcat 插件正常运行

javascript - 当鼠标一段时间不移动时,用 jQuery 隐藏 div 元素?

iphone - LocalStorage 不适用于 iPad 和 iPhone