我试图使我的汉堡菜单在菜单(.NavMenu)外部时检测到单击,并将“汉堡”复选框更改回未选中状态。

我已经尝试过使用event.stopPropagation();并尝试检测文档中的点击,但是我的JavaScript知识真的很有限,所以我要么无法显示.NavMenu,要么在外面单击时关闭.NavMenu,但是汉堡菜单仍然像它是打开的(X)。

任何人都可以在div外部单击时关闭菜单(也将触发该复选框),如何帮助我关闭菜单?

http://jsfiddle.net/s9ndequ2/

最佳答案

在div上使用class ='NavMenu'添加id'burgerMenu'。

并将您的JavaScript修改为

$('#burger').click(function() {
     if( $(this).is(':checked')) {
        $(".NavMenu").show();
     } else {
        $(".NavMenu").hide();
     }
    });
    $('body').click(function(event){
      removeBurger(event)
    })
    //this detects that user has clicked outside the menu
    function removeBurger(e){
      var targ;
      if (!e) {
          var e = window.event;
      }
      if (e.target) {
          targ=e.target;
      } else if (e.srcElement) {
          targ=e.srcElement;
      }
      if(targ.id!="burgerMenu" && targ.id!="burger"){
        if ( $('#burger').is(':checked')) {
        $(".NavMenu").hide();
        $( "#burger" ).prop( "checked", false );
      }
    }
    }


希望这会有所帮助。

09-16 13:09