我试图在点击按钮时隐藏左侧菜单栏以及单击文档中的任何位置。
我尝试了以下代码,该代码位于以下链接中。
我需要一些帮助......
以下是尝试过的代码: 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();
});
答案 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');
}
});