使用Jquery隐藏侧面菜单栏

时间:2014-02-12 15:03:13

标签: javascript jquery html

我试图在点击按钮时隐藏左侧菜单栏以及单击文档中的任何位置。

我尝试了以下代码,该代码位于以下链接中。

我需要一些帮助......

以下是尝试过的代码: Jquery的:

$("#openMenuLayout").click(function(e){
   debugger;
    if ($('#menuLayout').hasClass('open-menu')){
       $('#menuLayout').removeClass('open-menu');
       $('#openMenuLayout').find('img').removeClass().addClass('opened_icon');
          $(this).css('display','block');
     } else {
       $('#menuLayout').addClass('open-menu');
       $('#openMenuLayout').find('img').removeClass().addClass('open-menu_icon');
       $(this).css('display','block');
     }

     e.preventDefault();
 });

Demo Link

4 个答案:

答案 0 :(得分:2)

与此问题非常相似:Opening mobile menu in Chrome for Android by setting width only works first time.

这是我的解决方案:http://codepen.io/anon/pen/jiyHI

基本上,您可以在菜单和内容之间创建一个可点击的图层。

编辑:代码

<div id="overlay"></div>
<div id="menu-button"></div>
<div id="menu">
     <!--your menu-->    
</div>
<div id="content"></div>

CSS

#content {
  ...
  z-index:1;
}

#overlay{
  width:100%;
  height:100%;
  position:fixed;
  top:0;
  left:0;
  background:rgba(0,0,0,0.3);
  z-index:5;  //between content and overlay
  display: none;
}

#menu{
     z-index:10; //greater than content and overlay
 }

的Javascript

$("#menu-button").bind( "click", function() {
  $('#menu').toggleClass('open');
  $('#overlay').show(0);
});

$("#overlay").bind( "click", function() {
  $('#mobile-menu').removeClass('open');
  $('#overlay').hide(0);     
});

答案 1 :(得分:1)

当用户点击菜单外部时,此功能将关闭菜单。

$(document).click(function(e){

    if (!$("#menuLayout").is(e.target) && $("#menuLayout").has(e.target).length === 0) { 

           // Clicked outside, close menu
            $("#menuLayout").removeClass('open-menu');

    }

});

答案 2 :(得分:0)

要在单击文档中的任何位置时关闭侧栏,您需要将逻辑放在下面的函数中。

$(document).mouseup(function(e) { });

答案 3 :(得分:0)

这样您也可以使用图像切换可见性!

$("#openMenuLayout").click(function(e){
        if ($('#menuLayout').hasClass('open-menu')){
            $('#menuLayout').removeClass('open-menu');
            $('#openMenuLayout').find('img').removeClass().addClass('opened_icon');
            $(this).css('display','block');
        } else {
            $('#menuLayout').addClass('open-menu');
            $('#openMenuLayout').find('img').removeClass().addClass('open-menu_icon');
            $(this).css('display','block');
        }  
        e.preventDefault();
 });


$(document).mouseup(function (e)
{
    var container = $("nav#menuLayoutList");
    console.log(e.target.nodeName);
    if (!container.is(e.target) 
        && container.has(e.target).length === 0 
        && e.target.nodeName != "IMG")
    {
        $('#menuLayout').removeClass('open-menu');
    } 
});

http://jsfiddle.net/WDqZ2/8/