javascript - 在我将 javascript 添加到导航组件后,HTML href 链接不起作用

标签 javascript html navigation href

我有一个使用 html 和 css 创建的简单主导航菜单。当我添加一些 javascript 来处理移动菜单按钮的折叠和切换时,页面上的每个链接都停止工作。

我基于这支笔的导航:https://codepen.io/anon/pen/YQjzzq

(function() {

  // Definition of caller element
  var getTriggerElement = function(el) {
    var isCollapse = el.getAttribute('data-collapse');
    if (isCollapse !== null) {
      return el;
    } else {
      var isParentCollapse = el.parentNode.getAttribute('data-collapse');
      return (isParentCollapse !== null) ? el.parentNode : undefined;
    }
  };

  // A handler for click on toggle button
  var collapseClickHandler = function(event) {
    var triggerEl = getTriggerElement(event.target);
    // If trigger element does not exist
    if (triggerEl === undefined) {
      event.preventDefault();
      return false;
    }

    // If the target element exists
    var targetEl = document.querySelector(triggerEl.getAttribute('data-target'));
    if (targetEl) {
      triggerEl.classList.toggle('-active');
      targetEl.classList.toggle('-on');
    }
  };

  // Delegated event
  document.addEventListener('click', collapseClickHandler, false);

})(document, window);
<nav role="navigation" id="navigation" class="list">
          <a href="http://sitename.se/site/index.html" class="item -link">Hem</a>
          <a href="http://sitename.se/site/vart-boende.html" class="item -link">Vårt Boende</a>
          <a href="http://sitename.se/site/om-vald.html" class="item -link">Om Kvinnovåld</a>
          <a href="http://sitename.se/site/lankar.html" class="item -link">Länkar</a>
          <a href="http://sitename.se/site/engagera-dig.html" class="item -link">Engagera Dig</a>
          <a href="http://sitename.se/site/english.html" class="item -link">English</a>
          <a href="http://sitename.se/site/kontakt.html" class="item -link">Kontakt</a>
        </nav>

        <!-- Button to toggle the display menu  -->
        <button data-collapse data-target="#navigation" class="toggle">
          <!-- Hamburger icon -->
          <span class="icon"></span>
        </button>

最佳答案

目前,这些链接不起作用,因为它们在 JavaScript 的第 19 行阻止了它们的默认行为。如果我对情况的理解正确,您只希望事件监听器应用于可折叠菜单,因此我建议将代码更改为如下内容:

 // Delegated event
document.getElementsByClassName('toggle')[0].addEventListener('click', collapseClickHandler, false);

关于javascript - 在我将 javascript 添加到导航组件后,HTML href 链接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44935732/

相关文章:

javascript - 如果 EventListener 已经存在,如何重用它? [纯 JavaScript]

html - 响应式 super 菜单问题

javascript - 是什么让 Twitter 页面之间的导航如此之快?

javascript - div 之间的下一个上一个导航

带有许多 fragment 的 Android 抽屉导航

javascript - 需要用 js/php 库插入正确的方向

javascript - 正则表达式将 <h[n]> 替换为 <h2> 输出不是预期的

javascript - 如何创建全视口(viewport)屏幕网站布局

javascript - 保存多个状态并恢复到每个状态

CSS 未应用于元素