gpt4 book ai didi

javascript - 覆盖点击关闭菜单需要双击而不是单击

转载 作者:行者123 更新时间:2023-11-30 08:31:52 25 4
gpt4 key购买 nike

我有一个滑出式菜单,我想在用户点击叠加层时将其关闭。菜单关闭但要再次打开它我必须点击切换两次而不是一次,我哪里错了?谢谢。演示此的示例页面 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();
}
});
<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">&times;</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 语句的 else 部分(即关闭菜单)。

这就是为什么如果通过单击覆盖关闭菜单,则需要单击 2 次才能打开菜单。

您可以尝试在通过单击叠加层关闭菜单时切换类(“打开”)。

关于javascript - 覆盖点击关闭菜单需要双击而不是单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36674280/

25 4 0