jquery - 在父级单击时切换类并排除子级单击

标签 jquery

我可以仅在单击父级而不是子级时切换类(class)吗?

该类只能在单击顶级 li 时切换。

代码笔:https://codepen.io/flinch85/pen/zXdJav

 $( document ).ready(function() { 

  $('.menu-item-has-children').click(function(){
  $(this).toggleClass('sub-show');
});

  });

最佳答案

使用is()检查作为.menu-item-has-children元素的直接子元素的目标元素a标签方法(或防止事件冒泡)。或者将事件处理程序绑定(bind)到直接子标记 a,这样当您在嵌套列表内单击时它就不会触发。

$(document).ready(function() {
  $(".menu-item-has-children").click(function(e) {
    if ($(e.target).is(".menu-item-has-children > a"))
      $(this).toggleClass("sub-show");
  });
});

$(document).ready(function() {
  $(".menu-item-has-children").click(function(e) {
    if ($(e.target).is(".menu-item-has-children > a"))
      $(this).toggleClass("sub-show");
  });
});
.sub-show {
  color: pink;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li><a href="#">Home</a></li>

  <li class="menu-item-has-children"><a>Services</a>

    <ul class="sub-menu">
      <li><a href="#">Item</a></li>
    </ul>

  </li>

</ul>

关于jquery - 在父级单击时切换类并排除子级单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668458/

相关文章:

jquery - 如何在不使用 CSS3 更改排列的情况下重新缩放每个 `faces`

jquery - 我可以使用 jQuery 加载数据而不让浏览器显示正在加载吗?

javascript - jQuery Datatables - 单击该行中的按钮时如何获取该行的索引

javascript - 达到 IF 条件后停止函数

javascript - 使用 Jquery 同时将 html 和 text 设置为一个元素

javascript 帮助 - 以老派的方式做一些新的事情

javascript - 单击时显示元素,不活动时再次隐藏

javascript - 添加表情符号后的 Jquery 焦点光标

jquery - Phantomjs 分页后 : always creating spaces

jquery - tinymce 删除文本空格和换行符