覆盖单击时关闭菜单需要双击而不是单击
Close menu on overlay click requires double click instead of single click
我有一个滑出菜单,当用户点击覆盖时,我想关闭它。菜单关闭了,但要再次打开它,我必须点击切换两次,而不是一次,我哪里错了?谢谢演示此幻灯片输出菜单的示例页
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();
}
});
<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>
我认为这里的问题是,在单击覆盖后,打开的类仍然在toggleMenu上。
因此,如果在关闭后单击打开菜单,则单击事件将从toggleMenu中删除打开类,从而导致if语句的其他部分被执行(即关闭菜单)。
这就是为什么如果菜单是通过单击覆盖关闭的,那么在打开菜单之前需要单击两次。
您可以尝试在关闭菜单时通过单击覆盖来切换Class("打开")。
相关文章:
- 双击泛光灯单击
- 如何在Firefox中禁用视频的单击和双击控件
- 当单选按钮的标签可单击时双击
- 覆盖单击时关闭菜单需要双击而不是单击
- 如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
- 使用双击事件时如何取消单击事件
- 浏览器后退按钮 单击到双击使用 JavaScript
- 双击时设置内容可编辑 - IE 不允许编辑,除非再单击一次
- 如何在 javascript 中的同一元素上应用长单击事件和双击事件
- 如何通过双击而不是单击触发链接(标签)
- 只需单击标签即可双击
- 单击时添加几行,双击删除添加的行
- 有没有办法将所有双击事件绑定到jQuery / JavaScript中的单击等效项
- jQuery 单击仅在双击时才有效
- 容器导航下拉列表的单击问题(需要双击才能下拉)
- jQuery将数据从单击事件传递到双击
- 动画在双击而不是单击时工作
- 如何在'单击'和'双击'在相同的元素上
- 在同一个元素中使用Javascript、单击、双击和拖动
- 使我的点击双击事件工作