【问题标题】:Close mobile menu when clicking link in hid单击隐藏中的链接时关闭移动菜单
【发布时间】:2020-02-16 16:34:49
【问题描述】:

我的网站上有一个移动菜单,当按下按钮时会显示该菜单。当我使用下面的代码按下此按钮时,显示和隐藏菜单效果很好:

但我也想在单击此菜单中的链接时隐藏菜单。我怎样才能做到这一点?

var coll = document.getElementsByClassName("hamburger");
var i;
for (i = 0; i < coll.length; i++) {
  coll[i].addEventListener("click", function() {
    this.classList.toggle("active");
    var mobilemenuspace = this.nextElementSibling;
    if (mobilemenuspace.style.display === "block") {
      mobilemenuspace.style.display = "none";
    } else {
      mobilemenuspace.style.display = "block";
    }
  });
}

【问题讨论】:

    标签: javascript html css mobile menu


    【解决方案1】:

    您可以在每个链接上添加一个 eventLister,然后调用:

    function onLinkClick() {
      var coll = document.getElementsByClassName("hamburger");
      coll.classList.remove("active");
    }
    

    【讨论】:

      【解决方案2】:

      为每个链接添加事件侦听器。代码可能如下所示。

      注意,对我来说,下面的代码很麻烦,并且在不清楚或不安全的地方,这很好,这是一个好的开始。 jQuery 可以让事情变得更好,但在 React 或 Vue 中会更整洁。

      const toggleMenu = () => {
        const menu = document.getElementsByClassName("the-list")[0];
        if (typeof menu === "undefined" || typeof menu === "null") {
          throw new Error("menu element not found");
        };
      
        const isHidden = menu.classList.contains("hidden");
        if (isHidden) {
          menu.classList.remove("hidden");
        } else {
          menu.classList.add("hidden");
        };
      };
      
      const button = document.getElementById("the-button");
      button.addEventListener("click", toggleMenu);
      
      const links = document.getElementsByClassName("a-link");
      for (link of links) {
        link.addEventListener("click", toggleMenu);
      };
      .hidden {
        display: none;
      }
      <ul class="the-list hidden">
        <li class="a-link"><a href="#">link 1</a></li>
        <li class="a-link"><a href="#">link 2</a></li>
      </ul>
      <button id="the-button">toggle menu</button>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多