繁体   English   中英

使儿童不再单击手风琴

[英]unbind children from click for accordion

我有一个为SharePoint编写的手风琴菜单:

parent.click(function(event) {
    event.preventDefault();
    var childUL = $(this).closest("li").find("> ul");
    var isVisible = childUL.is(":visible");

    if($(e.target).hasId("#zz12_V4QuickLaunchMenu ul > ul > li > a")){
    e.stopPropagation();
     }
    else if (isVisible) {
        childUL.slideUp();
    } else {
        childUL.slideDown();
    }
});

我遇到的问题是父<li>的问题。 如果父级列表项具有url,则必须利用preventDefault来确保onClick事件不会正常触发,以便显示子菜单。 但是,我发现,由于我阻止了默认设置的激活,因此与单击普通单击事件相比,单击它们时,所有链接实际上都在上/下滑动。 我不知道在哪里/如何实现取消绑定事件。

jsfiddle已更新。

编辑:根据下面的答案,我找到了所需的结构,并且能够停止传播。 但是,它将停止整个功能。 有人可以帮我找出正确的选择器吗? 不像下面建议的那样熟悉节点名称,因为它嵌套在SharePoint的500万个CSS类中。 我想使用尽可能直接的选择器。 如果您愿意提供帮助,请写出实际示例,谢谢!

你需要:

  • 识别点击是否在子菜单中的链接上
  • 如果是,则应用event.stopPropagation();

然后,子菜单中的链接将表现为普通链接。


进一步阅读: https : //developer.mozilla.org/en/docs/Web/API/Event/stopPropagation

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM