我已经对子导航进行了硬编码,并希望通过简单地添加一个类“活跃”来突出显示当前页面的导航栏项目。到那些链接。但是下面的HTML-Markup结合javascript将活动类添加到每个li(.irp-menu-item)而不仅仅是最近的li。脚本只需要将类添加到最接近的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");
}
});
})
});
答案 0 :(得分:7)
使用下面给出的Javascript代码和样式,并在您的标题中包含:
<style>
a.current {
color: orange !important;
}
</style>
<script>
$(function () {
$('.irp-menu li a').each(function () {
if ($(this).prop('href') == window.location.href) {
$(this).addClass('current');
}
});
});
</script>
答案 1 :(得分:2)
您使用的函数“substring”错误。
string.substring(start,end)
start
:必需。
end
:可选。
正确的语法是:
jQuery(document).ready(function($) {
var url = window.location.pathname;
var activePage = url.substring(0, url.lastIndexOf('/') + 1);
$('.irp-menu-item .irp-menu-link').each(function () {
var linkPage = this.href.substring(0, this.href.lastIndexOf('/') + 1);
if (activePage == linkPage) {
$(this).closest("li").addClass("active");
}
});
});
在以下演示中我只使用静态网址进行测试: https://jsfiddle.net/5ca45spe/2/
答案 2 :(得分:1)
我编辑了Rami使用整个href的答案。
//this makes the current link containing li of class "active"
$(document).ready(function ($) {
var url = window.location.href;
var activePage = url;
$('.irp-menu-item a').each(function () {
var linkPage = this.href;
if (activePage == linkPage) {
$(this).closest("li").addClass("active");
}
});
});