首页 > 解决方案 > 单击外部菜单时关闭下拉菜单

问题描述

我有以下

function subNavToggle() {
    var subNav = document.getElementById("subnav-section");
    if (subNav.className === "navigation-subnav") {
        subNav.className += " responsive";
    } else {
        subNav.className = "navigation-subnav";
    }
 }

我试图在单击菜单外部时关闭扩展菜单。

我有这个,它会关闭菜单,但它也会关闭汉堡菜单 - 阻止用户再次打开。

 $(document).click(function(event) { 
     var $target = $(event.target);
     if(!$target.closest('.sub_nav_links').length && 
     $('.sub_nav_links').is(":visible")) {
       $('.sub_nav_links').hide();
     }        
   });

还以为我可以摆脱以下情况,但实际上恰恰相反。打开外部菜单项。

window.onclick = subNav;

标签: javascript

解决方案


  $('html').on('click, touchend', function (e) {
    // Close hamburger menu when tapping outside
    if ($(e.target).closest('#subnav-section').length == 0) {
        var opened = $('.navigation-subnav').hasClass('responsive');
        if (opened === true) {
            $('.navigation-subnav').collapse('hide');
        }
    }
});

推荐阅读