当用户点击叠加层时,我想要关闭一个滑出菜单.菜单关闭但是要再次打开它我必须两次点击切换而不是一次,我在哪里错了?谢谢.展示此slideoutMenu的示例页面
function expandOverlay() {
var overlay = document.createElement("div");
overlay.setAttribute("id", "overlay04");
overlay.setAttribute("class", "overlay04");
document.body.appendChild(overlay);
}
function restore() {
document.body.removeChild(document.getElementById("overlay04"));
}
// create menu variables
var slideoutMenu = $('.slideout-menu');
var slideoutMenuWidth = $('.slideout-menu').width();
$(document).ready(function() {
$('.slideout-menu-toggle').on('click', function(event) {
event.preventDefault();
// toggle open class
slideoutMenu.toggleClass("open");
// slide menu
if (slideoutMenu.hasClass("open")) {
slideoutMenu.animate({
left: "0px"
});
expandOverlay();
} else {
slideoutMenu.animate({
left: -slideoutMenuWidth
}, 250);
restore();
}
});
});
window.addEventListener('mouseup', function(event) {
var box = document.getElementById('menu_s');
if (event.target != box && event.target.parentNode != box) {
slideoutMenu.animate({
left: -slideoutMenuWidth
}, 250);
restore();
}
});Run Code Online (Sandbox Code Playgroud)
<nav>
<ul>
<li><a href="#" class="lag slideout-menu-toggle">open menu</a></li>
</ul>
</nav>
<!--begin slideout menu-->
<div id="menu_s" class="slideout-menu">
<h3>Last Week<a href="#" class="slideout-menu-toggle">×</a></h3>
<div class="fslide"></div>
<ul>
<li><a href="http://dundaah.com/">Dundaah</a></li>
<li><a href="http://pics.dundaah.com/">Pics</a></li>
<li><a href="http://blog.dundaah.com/">Blog</a></li>
<li><a href="http://music.dundaah.com/">Music</a></li>
</ul>
</div>Run Code Online (Sandbox Code Playgroud)
小智 5
我相信这里的问题是在点击叠加后,类打开仍然在toggleMenu上.
因此,如果您在关闭后单击打开菜单,则click事件将从toggleMenu中删除open类,从而导致if语句的else部分被执行(即关闭菜单).
这就是在菜单打开之前需要2次点击的原因,如果单击叠加层将其关闭.
通过单击叠加关闭菜单时,您可以尝试toggleClass("open").
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |