繁体   English   中英

Navbar活动类在Bootstrap 4中不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM