javascript - 当我点击其他地方时如何隐藏我的滑动sidenav?

标签 javascript android jquery html css

我正在尝试模仿 android 的侧边菜单样式。这是我的codepen的链接 https://codepen.io/Killerbee98/pen/KqreZw . 我的问题是当我在导航之外按下时它不会像在 android 上那样关闭。现在我已经对如何做这样的事情做了一些研究;首先是使用:

$('#menucontainer').click(function(event){
  event.stopPropagation();
});

但这不是一个实用的方法,使用起来是错误的。

第二个是添加一个点击监听器:

$(document).click(function(event){ 
  if (!$(event.target).closest('.navigation').length) {
    $('.navigation').hide();
  }
});

但这不适用于我的代码,因为我的代码有一个点击监听器:

$('.menu-btn').click(function() {
   console.log("button pressed");
   if($('.navigation').width() === 250){
   $('.navigation').width('0px');
}else{
   $('.navigation').width('250px');
  }
})

我试过这样做:

$('.menu-btn').click(function() {
   console.log("button pressed");
   if($('.navigation').width() === 250){
   $('.navigation').width('0px');
   $(document).click(function(event){ 
       if (!$(event.target).closest('.navigation').length) {
           $('.navigation').hide();
       }
   });
 }else{
   $('.navigation').width('250px');
  }
})

它关闭但没有按预期再次打开。

我该如何解决我的问题?

最佳答案

我已经设法通过使用 this answer 制作了一个工作示例

这是代码

 $('.menu-btn').click(function() {
     if($('.navigation').is(":visible")) {
            $('.navigation').hide();
        } else {
           $('.navigation').show();
        }
})

$(document).click(function(event) { 
    if(!$(event.target).closest('.navigation').length &&      
    !$(event.target).hasClass('menu-btn')) {
        if($('.navigation').is(":visible")) {
            $('.navigation').hide();
        }
    }        
})

编辑:

我还为 navigation 类调整了 css 样式

.navigation{
  position:fixed;
  left: 0;
  top: 0;
  width: 250px;
  display: none;
  height: 100%;
  box-shadow: 1px 0px 15px 0px #999;
  transition: .2s;
}

这是一个working demo

关于javascript - 当我点击其他地方时如何隐藏我的滑动sidenav?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45023296/

相关文章:

javascript - 在php中将复选框值发送到数据库

android - 带框架布局的抽屉导航

android - 如何以编程方式检查 Android 上的 TEE 支持?

javascript - 在文本区域中显示数据消息

javascript - jquery 醉酒不触发 onclick IE

javascript - 关于一段事件循环代码的随机结果

javascript - React : setState is return an error in a scroll handler. 是什么破坏了它?

javascript - 从数据库获取值并显示在 html 表中(包括 PHP)

android - Recyclerview 不显示项目

javascript - 在未选择的下拉菜单上设置类