javascript - 单击汉堡包图标后无法正确打开菜单

标签 javascript html css

我无法让 fiddle 工作,但我遇到了问题 here .

当我单击该图标时,我会看到菜单显示一秒钟,然后又消失了。我想我的 javascript 是说如果我点击它,它会保持打开状态,直到你再次点击它关闭。

HTML

<div class="hamburger hamburger--spin" tabindex="0"
     aria-label="Menu" role="button" aria-controls="navigation">
   <div class="hamburger-box">
      <div class="hamburger-inner"></div>
   </div>
</div>

<nav id="menu">Content</nav>

Javascript

$(".hamburger").click(function() { 
    $("#menu").fadeIn("fast");
});
$(".hamburger").click(function() { 
    $("#menu").fadeOut("fast");
});

var $hamburger = $(".hamburger");
$hamburger.on("click", function(e) {
    $hamburger.toggleClass("is-active");
    // Do something else, like open/close menu
});

我在 #menu 上有 display:none;,当我点击 .hamburger 时,它会显示 display:block ; 我不确定到底是做什么的。也有没有办法结合这个js?

最佳答案

您已经绑定(bind)了两次 click 事件,第一次尝试显示该元素,然后第二次尝试在它仍在显示时隐藏它,从而始终显示它。试试这段代码

$(function() {
  $(".hamburger").click(function() {
    if ($("#menu").is(":hidden"))
      $("#menu").fadeIn("fast");
    else
      $("#menu").fadeOut("fast");
  });

  var $hamburger = $(".hamburger");
  $hamburger.on("click", function(e) {
    $hamburger.toggleClass("is-active");
    // Do something else, like open/close menu
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="hamburger hamburger--spin" tabindex="0" aria-label="Menu" role="button" aria-controls="navigation">
  <div class="hamburger-box">
    <div class="hamburger-inner">INner</div>
  </div>
</div>

<nav id="menu">Content</nav>

关于javascript - 单击汉堡包图标后无法正确打开菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244521/

相关文章:

javascript - Android Chrome 在我的 HTML5 网站上不断崩溃——如何调试它?

javascript - Ionic iOS 应用程序不显示或播放本地 mp4 文件

css - 神秘的底边

jquery - IF语句问题后台更改

java - 触发链接但不更改页面内容

javascript - 将两个函数绑定(bind)到 jQuery 中的一个按钮

javascript - Node.js/Express.js 无法通过请求中间件从 API 调用获取正文响应

html - 网络音频API : Merging stream of mp3 sounds to one file and playing it in <audio> tag

javascript - 如何将发布/获取 json 值 (html) 发送到 API?

javascript - div 与背景图像大小相同