javascript - 汉堡响应式按钮点击事件BUG

标签 javascript jquery html

我的汉堡按钮有一个烦人的错误。我在 stackoverflow 上找到了如何在单击文档上其他位置时隐藏下拉菜单,但这会导致一个错误,如果我想通过再次单击它隐藏的汉堡包图标来关闭菜单一秒钟然后再次显示。

关于我做错了什么的建议?

更新:这里是 http://jsfiddle.net/scuzgvmq/ 点击按钮向下滑动,再次点击即可看到BUG

$('.hamburger').click(function() {
  $('#header .responsive-menu').slideToggle();
});

$(document).mouseup(function (e) {
   var container = $("#header .responsive-menu");

  if (!container.is(e.target) // if the target of the click isn't the container...
     && container.has(e.target).length === 0) // ... nor a descendant of the container
  {
      container.hide('slow');
  }
});

HTML

<ul class="responsive-menu">
    <li>Example</li>
    <li>Example</li>
    <li>Example</li>
</ul>

<div class="hamburger"></div>

最佳答案

您需要检查触发器是否不是像 this fiddle 中那样的汉堡包按钮。

    $(document).ready(function () {
        var container = $(".responsive-menu");
        var hamburger = $(".hamburger");

        hamburger.on('click', function () {
            container.slideToggle();
            container.addStyle('display:block');
        });

        $(document).on('mouseup', function (e) {

            if (!container.is(e.target) && !hamburger.is(e.target) && container.has(e.target).length === 0) // ... nor a descendant of the container
            {
                container.hide('slow');
            }
        });
    });

关于javascript - 汉堡响应式按钮点击事件BUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26055652/

相关文章:

javascript - window.location.href - 资源被解释为文档但以 MIME 类型传输

javascript - Activity 按钮

javascript - 如何在 javascript 执行时显示一条消息?

jQuery val 到 div

javascript - jquery:你能详细说明这个职位是如何工作的吗?新手使用偏移等进行定位

JQuery DatePicker 和 beforeShowDay

javascript - DOM 中的 node.isSameNode(node1) 和 node === node1 有什么区别?

javascript - 在另外两个类之间切换元素的简单而优雅的方法

python - 无限滚动条不适用于 django

javascript - 在适合我的网页的链接上扩展搜索栏