子菜单关闭菜单

时间:2015-08-10 02:30:21

标签: jquery drop-down-menu

我正在处理一个菜单,该菜单仅在点击时显示子菜单,而不是在悬停时。 我在网上找到了很多代码,但下面的代码更干净,而且有效。 问题是,当我点击子菜单项时,它关闭菜单并且不打开URL。

由于代码非常简洁,我知道这必须是一个我无法看到的小细节。

$(document).ready(function() {
    $(".menu-item-has-children").click(function() {
        event.stopPropagation();
        event.preventDefault();
        $('.menu-item-has-children > .sub-menu').not($(this).children(".sub-menu").toggle()).hide();
    });
});

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

event.stopPropagation();
event.preventDefault();

行导致跟随链接的默认行为不起作用。

当事件从内部元素冒泡时,这些也会触发。为了检查是否应该触发它们,您可以执行以下操作

$(document).ready(function () {
    $(".menu-item-has-children").click(function (e) {
        if ($(e.target).closest('li').hasClass('menu-item-has-children')) {
            e.stopPropagation();
            e.preventDefault();
        }
        $('.menu-item-has-children > .sub-menu').not($(this).children(".sub-menu").toggle()).hide();
    });
});

这将检查触发事件的实际元素。