javascript - jQuery on click 函数 To li 和嵌套 li

标签 javascript jquery

我有一个点击功能,基本上可以在点击时关闭菜单上的幻灯片,然后转到网址,这样看起来更好。在 li 标签的父集上效果很好,但在嵌套标签上则不然。看起来 href 在单击嵌套的 li 和父级时返回,因此失败。

jQuery 代码:

$('#menu-pages li').on('click', function(event) {
  event.preventDefault();
  /* Act on the event */
  var href = $(this).children('a').attr('href');
  page.toggleClass('menu-open');
  mobileMenu.toggleClass('mobile-menu-open');

  page.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
    window.location = href;
  });
});

HTML 代码:

<div id="menu-pages">
  <li><a href="/dashboard/">My Dashboard</a></li>
  <li><a href="/Community/">Community</a>
    <ul class="sub-menu">
      <li><a href="/forum/">forum</a></li>
      <li><a href="/messages/">Messages</a></li>
      <li><a href="/groups/">groups</a></li>
    </ul>
  </li>
  <li><a href="/teachings/">Teachings</a>
    <ul class="sub-menu">
      <li><a href="/teachings/?category=Creativity">Creativity</a></li>
      <li><a href="/teachings/?category=Craft">Craft</a></li>
      <li><a href="/teachings/?category=Coaching">Coaching</a></li>
      <li><a href="/teachings/?category=Conversations">Conversations</a></li>
      <li><a href="/checklists/">Checklists</a></li>
    </ul>
  </li>
</div>

最佳答案

您嵌套了 li 标签,并且点击事件可能是在内部标签之前从外部标签触发的。

您始终可以将其更改为“a”标签,并为单个偶数监听器使用委托(delegate)

委托(delegate)方法还可以修复“li”标签点击事件顺序,因为它将从子元素中冒出

 $('#menu-pages').on('click', 'a', function(event) {

         event.preventDefault();
         /* Act on the event */
         var href = $(this).attr('href');

         page.toggleClass('menu-open');
         mobileMenu.toggleClass('mobile-menu-open');

         page.one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) {
              window.location = href;
         });
});

关于javascript - jQuery on click 函数 To li 和嵌套 li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579766/

相关文章:

javascript - iOS touchstart 和 touchmove 之间的延迟?

javascript - 显示 child /查找

c# - 如何使用 C# 编程语言通过 Visual Studio 编写 FireFox 扩展?

javascript - 在 Object Orient JS 中,我试图动态地将一个对象添加到数组中

javascript - 如何创建凹形边框?

javascript - JSNI(GWT-GWTP): jQuery does not select node in 'document ready' function after ready event fires

javascript - 使用 jQuery 将子元素向上移动一级

javascript - CSS 高度 100% 无效

javascript - Meteor.users.update() 不适用于注销+登录

javascript - Flex 容器内的底部对齐 div