サブナビゲーションをハードコーディングしましたが、これらのリンクにクラス「アクティブ」を追加するだけで、現在のページのナビゲーション バー項目を強調表示したいと考えています。しかし、次の HTML マークアップを JavaScript と組み合わせて使用すると、最も近い li だけでなく、すべての li(.irp-menu-item) にアクティブなクラスが追加されます。スクリプトはクラスを最も近い li に追加するだけで、他のものには追加しない必要がありますが、どういうわけかこの問題を解決できません。
HTML マークアップ:
<nav id="irp-subnav" class="css-sticky" role="navigation" aria-label="irp-subnav" lang="de-DE">
<div class="irp-wrapper">
<div class="irp-background"></div>
<div class="irp-content">
<span class="irp-title">
TITLE</span>
<div class="irp-menu">
<div class="irp-menu-tray">
<ul class="irp-menu-items">
<li class="irp-menu-item"><a href="/LINK-1/" class="irp-menu-link">LINK 1</a>
</li>
<li class="irp-menu-item"><a href="/LINK2/" class="irp-menu-link">LINK 2</a>
</li>
<li class="irp-menu-item"><a href="/LINK3/" class="irp-menu-link">LINK3</a>
</ul>
</div>
<div class="irp-actions irp-actions-right">
<div class="irp-action irp-action-menucta" aria-hidden="true">
<label for="irp-menustate" class="irp-menucta"> <span class="irp-menucta-chevron"></span>
</label>
</div>
</div>
</div>
</div>
</div>
</nav>
Javascript:
jQuery(document).ready(function($) {
$(function () {
var url = window.location.pathname;
var activePage = url.substring(url.lastIndexOf('/') + 1);
$('.irp-menu-item .irp-menu-link').each(function () {
var linkPage = this.href.substring(this.href.lastIndexOf('/') + 1);
if (activePage == linkPage) {
$(this).closest("li").addClass("active");
}
});
})
});