【问题标题】:Close bootsnav side-menu on page click点击页面关闭 bootsnav 侧边菜单
【发布时间】:2016-09-05 15:53:02
【问题描述】:

这里是新手),
我正在使用bootsnav 创建带有切换按钮的侧边菜单。如果用户单击菜单外的其他位置,我希望它关闭,但我无法使其工作。我尝试了在论坛上找到的几种解决方案(确实有很多),但没有。 我尝试使用toggleClass和removeClass对jquery执行this之类的操作,但最好的尝试导致菜单无法打开,因为切换类同时触发和未触发。

这是触发菜单的代码:

$("nav.navbar.bootsnav .attr-nav").each(function(){  
            $("li.side-menu > a", this).on("click", function(e){
                e.preventDefault();
                $("nav.navbar.bootsnav > .side").toggleClass("on");
                $("body").toggleClass("on-side");
            });
        });
        $(".side .close-side").on("click", function(e){
            e.preventDefault();
            $("nav.navbar.bootsnav > .side").removeClass("on");
            $("body").removeClass("on-side");
        });

有人可以帮忙吗?

【问题讨论】:

  • 它们都激活了,因为你同时点击了它们,不是吗?快速查看 bootsnav 结构,我发现 .side .close-side 基本上是锚元素的包装器。对于您的情况,一个快速解决方法是定义一个变量,侧边栏是打开还是关闭,并在删除/切换类之前检查它

标签: javascript jquery twitter-bootstrap menu sidebar


【解决方案1】:

您可以在 HTML 上创建一些元素作为菜单的叠加背景,并在显示侧边菜单时显示它,并在像这样隐藏侧边菜单时隐藏它

$("nav.navbar.bootsnav .attr-nav").each(function(){  
    $("li.side-menu > a", this).on("click", function(e){
       e.preventDefault();
       $("nav.navbar.bootsnav > .side").toggleClass("on");
       $("body").toggleClass("on-side"); 

       $(".overlay-menu").fadeIn();
    });
});
$(".side .close-side").on("click", function(e){
    e.preventDefault();
    $("nav.navbar.bootsnav > .side").removeClass("on");
    $("body").removeClass("on-side");

    $(".overlay-menu").fadeOut();
});

然后您可以像这样为 .side-menu 创建 .overlay-menu 作为事件关闭

$(".overlay-menu").on("click", function(e){
   e.preventDefault();
   $("nav.navbar.bootsnav > .side").removeClass("on");
   $("body").removeClass("on-side");

   $(this).fadeOut();
});

像这样在你的 CSS 上设置 .overlay-menu

.overlay-menu{
   position:fixed;
   display:block;
   height:100%;
   width:100%;
   z-index: (less from side-menu)
}

希望对你有帮助

【讨论】:

  • 几个月后我将其标记为正确,我完全忘记了!不管怎样,你帮了大忙,谢谢!
猜你喜欢
  • 2019-06-22
  • 1970-01-01
  • 2021-10-26
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多