如何使用 jquery 添加特定 class 到 href 等于 URL 的锚标记?
How to add specific class to anchor tag has href equal to URL using jquery?
我想要一个 jQuery 动态菜单,它可以导航到 <a></a>
标签和包含在页面中的标签 URL。
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li').find('a').each(function() {
var text = $(this).attr("href");
if (window.location.href.includes(text)) {
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li a').addClass('active')
} else {}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="base">base</a></li>
<li><a href="test">test</a></li>
</ul>
在这段代码中,所有菜单都有颜色变化,应该根据页面的地址改变菜单的颜色。
改变
if (window.location.href.includes(text)) {
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li a').addClass('active')
}
进入
if (window.location.href.includes(text)) {
$(this).addClass('active')
}
只需删除 else 中的 class:
if (window.location.href.includes(text)) {
$(this).addClass('active')
} else {
$(this).removeClass('active')
}
当您使用它添加 class 时,它会起作用。我将一个 href 更改为 stack,因为该片段的 href 类似于 stacksnippet。对于该元素,它显示为红色。
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li').find('a').each(function() {
var text = $(this).attr("href");
if (window.location.href.includes(text)) {
$(this).addClass('active')
}
});
.active {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="stack">base</a></li>
<li><a href="test">test</a></li>
</ul>
您可以简化选择器和代码并使用 .filter()
而不是 .each()
$('ul.navbar-nav li a').filter(function(){
return window.location.href.includes($(this).attr('href'));
}).addClass('active');
window.location.href = "#home";
$('ul.navbar-nav li a').filter(function(){
return window.location.href.includes($(this).attr('href'));
}).addClass('active');
.active {color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="base">base</a></li>
<li><a href="test">test</a></li>
</ul>
我想要一个 jQuery 动态菜单,它可以导航到 <a></a>
标签和包含在页面中的标签 URL。
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li').find('a').each(function() {
var text = $(this).attr("href");
if (window.location.href.includes(text)) {
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li a').addClass('active')
} else {}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="base">base</a></li>
<li><a href="test">test</a></li>
</ul>
在这段代码中,所有菜单都有颜色变化,应该根据页面的地址改变菜单的颜色。
改变
if (window.location.href.includes(text)) {
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li a').addClass('active')
}
进入
if (window.location.href.includes(text)) {
$(this).addClass('active')
}
只需删除 else 中的 class:
if (window.location.href.includes(text)) {
$(this).addClass('active')
} else {
$(this).removeClass('active')
}
当您使用它添加 class 时,它会起作用。我将一个 href 更改为 stack,因为该片段的 href 类似于 stacksnippet。对于该元素,它显示为红色。
$('ul.nav.navbar-nav.side-nav.nicescroll-bar li').find('a').each(function() {
var text = $(this).attr("href");
if (window.location.href.includes(text)) {
$(this).addClass('active')
}
});
.active {
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="stack">base</a></li>
<li><a href="test">test</a></li>
</ul>
您可以简化选择器和代码并使用 .filter()
而不是 .each()
$('ul.navbar-nav li a').filter(function(){
return window.location.href.includes($(this).attr('href'));
}).addClass('active');
window.location.href = "#home";
$('ul.navbar-nav li a').filter(function(){
return window.location.href.includes($(this).attr('href'));
}).addClass('active');
.active {color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="nav navbar-nav side-nav nicescroll-bar" style="overflow: hidden; width: auto; height: 100%;">
<li><a href="home">home</a></li>
<li><a href="dashboard">dashboard</a></li>
<li><a href="base">base</a></li>
<li><a href="test">test</a></li>
</ul>