htmlとcssで作成された簡単なメインナビゲーションメニューがあります。モバイルメニューのボタンの折りたたみとトグルを処理するJavaScriptをいくつか追加すると、ページ上のすべてのリンクが機能しなくなります。javascriptをナビゲーションコンポーネントに追加した後、HTML hrefリンクが機能しない
私はこのペンのオフにナビゲーションをもと: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>
ドキュメント全体でグローバルクリックハンドラを設定しています。クリックされた要素に「データの崩壊」がなく、そのどちらも親を持たない場合、あなたはデフォルトを禁止します。そのため、誰かがリンクをクリックしたとき(データが崩壊していない、親をしている)、preventDefaultが実行され、クリックがキャンセルされます。 – James