[英]Navbar active class is not working in bootstrap 4
我试图将活动类添加到导航栏中当前打开的链接中。 我已经用Google搜索了很多。 在Stack Overflow中也有很多与此问题类似的问题,也有答案,但是这些所有答案仅适用于导航栏的哈希类型,例如href="#"
,当我拥有网站和页面时不起作用。 我想正确添加活动班级。 我已经尝试了很多,但是没有找到完美的答案。
这是我的代码:
<nav class="navbar navbar-expand-md navbar-dark sticky-top pt-0 pb-0">
<div class="container nav_container">
<a class="navbar-brand" href="<?php echo BASE_URL; ?>">
<img src="<?php echo BASE_URL; ?>/resources/assets/img/logo/logo_default.png" class="img-fluid foodbox_logo">
</a>
<button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#mainNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="mainNavbar">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link active" href="<?php echo BASE_URL; ?>">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?php echo BASE_URL; ?>/shop.php">Shop</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?php echo BASE_URL; ?>/cart.php">Cart</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?php echo BASE_URL; ?>/about-us.php">About Us</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<?php echo BASE_URL; ?>/contact-us.php">Contact Us</a>
</li>
</ul>
</div>
</div>
</nav>
JS:
<script>
$(document).ready(function() {
$('a.nav-link').on('click', '.nav-item a', function (e) {
$(this).parent().addClass('active').siblings().removeClass('active');
});
});
</script>
有人可以帮帮我吗?
使用以下代码段,并在导航栏中网址的末尾添加/
。
$(document).ready(function() {
var url = [location.protocol, '//', location.host, location.pathname].join('');
$('.nav-item.active').removeClass('active');
$('.nav-item a[href="' + url + '"]').parent().addClass('active');
$(this).parent().addClass('active').siblings().removeClass('active');
});
您可以尝试以下代码。
$(document).ready(function() {
$('.nav-link').on('click', '.nav-item a', function (e) {
$('.navbar-nav .nav-link').find(".active").removeClass("active");
$(this).parent().addClass('active');
});
});
jQuery的定义不正确。 在您的代码中,它试图在a.nav-link
找到一个nav-item a
,但找不到任何内容。 只需监视点击以获取a.nav-link
。 详情请看这里
$(document).ready(function() { /* Temporarily disable hyperlinks to see menu work */ $('a').attr("href", "#"); $('a.nav-link').on('click', function(e) { $(this).parent().addClass('active').siblings().removeClass('active'); }); });
nav { background-color: red; }
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <nav class="navbar navbar-expand-md navbar-dark sticky-top pt-0 pb-0"> <div class="container nav_container"> <a class="navbar-brand" href="<?php echo BASE_URL; ?>"> <img src="<?php echo BASE_URL; ?>/resources/assets/img/logo/logo_default.png" class="img-fluid foodbox_logo"> </a> <button class="navbar-toggler collapsed" type="button" data-toggle="collapse" data-target="#mainNavbar"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="mainNavbar"> <ul class="navbar-nav ml-auto"> <!-- Put class active at the correct level --> <li class="nav-item active"> <a class="nav-link" href="<?php echo BASE_URL; ?>">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="<?php echo BASE_URL; ?>/shop.php">Shop</a> </li> <li class="nav-item"> <a class="nav-link" href="<?php echo BASE_URL; ?>/cart.php">Cart</a> </li> <li class="nav-item"> <a class="nav-link" href="<?php echo BASE_URL; ?>/about-us.php">About Us</a> </li> <li class="nav-item"> <a class="nav-link" href="<?php echo BASE_URL; ?>/contact-us.php">Contact Us</a> </li> </ul> </div> </div> </nav>
我已经测试了此代码,并且可以正常工作。 我稍微改变了选择器。 试一试,看看它是否对您有用。 当您可以简单地使用下面的选择器访问导航中的每个锚点时,向每个锚点添加导航链接类是多余的。
然后,我遍历了您的导航锚,并删除了活动类,并将活动类附加到了单击的项上。
$(document).ready(function() {
$(".navbar-nav li a").on('click', function (e) {
$(".navbar-nav li").find('a').removeClass('active');
$(this).addClass('active');
});
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.