简体   繁体   English

如何通过单击画布内的窗口来关闭画布外菜单?

[英]How to close off-canvas menu by clicking on window inside canvas?

here's my codepen http://codepen.io/anon/pen/GZWPrj这是我的代码笔http://codepen.io/anon/pen/GZWPrj

I know it's been answered few times, but it's too difficult for me to translate it to my code.我知道它已经被回答了几次,但是将它翻译成我的代码对我来说太难了。

So I have a second off-canvas menu which is working as intended.所以我有第二个非画布菜单,它按预期工作。

One thing I want to add is the ability to close this menu, by clicking anywhere outside the off-canvas menu - so clicking inside the canvas.我想添加的一件事是能够关闭此菜单,方法是单击画布外菜单外的任意位置 - 因此单击画布内。

I found a good working example like我找到了一个很好的工作示例,例如

$(window).on("click", function(e) {
    if (
      $(".wrapper").hasClass("nav-open") && 
      !$(e.target).parents(".side-nav").hasClass("side-nav") && 
      !$(e.target).hasClass("toggle")
    ) {
        $(".wrapper").removeClass("nav-open");
      }
  });

here Close off-canvas menu on window click but I'm too dumb to figure out how to implement it to my version of code.这里在窗口单击时关闭画布菜单,但我太笨了,无法弄清楚如何将它实现到我的代码版本。

Your html structure is different to the linked example.您的 html 结构与链接示例不同。 Below is some code that will work for your example:下面是一些适用于您的示例的代码:

$(window).on("click", function(e) {
  if (!$(e.target).hasClass('menu-link') && !$(e.target).closest('.nav-stacked').hasClass('active')) {
    //Revert the menu
    $('#menu').removeClass('active');
    //Revert the main content
    $('.container').removeClass('active');
  }
});

Updated Codepen更新代码笔

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

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