Javascript 单击链接以外的任何内容(包括菜单图标)时需要关闭菜单

Javascript 单击链接以外的任何内容(包括菜单图标)时需要关闭菜单,javascript,jquery,menu,Javascript,Jquery,Menu,你可能会从我的JavaScript中看出,我不是专家。我从多个来源拼凑而成,基本上都是有效的,但我有两个挫折: 在移动设备上,当您点击外部菜单时,它并不总是关闭 单击菜单图标本身不会关闭菜单 $(function() { $('.dropdown-toggle').click(function(){ $(this).next('.dropdown').addClass("nav-open"); }); $(document).click(function(e) { va

你可能会从我的JavaScript中看出,我不是专家。我从多个来源拼凑而成,基本上都是有效的,但我有两个挫折:

  • 在移动设备上,当您点击外部菜单时,它并不总是关闭
  • 单击菜单图标本身不会关闭菜单

    $(function() {
      $('.dropdown-toggle').click(function(){
        $(this).next('.dropdown').addClass("nav-open");
      });
    
     $(document).click(function(e) {
       var target = e.target;
       if (!$(target).is('.dropdown-toggle') && 
        !$(target).parents().is('.dropdown-toggle')) {
          $('.dropdown').removeClass("nav-open");
       }
     });
    });
    
  • 非常感谢您的帮助

    也许你想要这个

    $(function() {
        var toggle = ".dropdown-toggle";
        $(toggle).on("click", function(){
            $(this).next('.dropdown').toggleClass("nav-open");
        });
    
        $(document).click(function(e) {
           var target = $(e.target);
           if (!target.is(toggle) && !target.parent().is(toggle)) {
               $(".dropdown").removeClass("nav-open");
           }
       });
    });
    

    这并不完全是我想要的,但我实际上认为它工作得很好,因为我已经在菜单图标中添加了第二个状态。单击图标现在关闭菜单。在手机上,点击菜单外的链接是很棘手的,因为你可以很容易地点击一个你不想访问的链接。谢谢你的帮助!