单击导航栏中的任何项目时,如何在导航栏中激活 link?

How can I active link in Navigation Bar when I click any item located in that bar?

我在单击导航栏中的任何选定项目时将 class 属性更改为活动时遇到问题。

我写了下面显示的这个 js 代码来实现这个过程,但是它没有用。

这是我的 HeaderPartialView 部分。

.... css files
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这是我的_Layout.cshtml部分。

....
@{
Html.RenderAction("HeaderPartial", "Home");
}

@{
    Html.RenderAction("NavbarPartial", "Home");
}  

....
@{
   Html.RenderAction("JSFilesPartial", "Home");
}

这是我的 JSFilesPartial 文件。

<script src="~/Content/SiteLayout/assets/js/navigation-bar.js"></script>

这是我的导航-bar.js文件。

    $(document).ready(function () {
        var current = location.pathname;
        $('.navigation-bar li a').each(function(){
            var $this = $(this);

            if($this.attr('href').indexOf(current) !== -1){
                $this.addClass('active');
            }
        })
    });

这是 NavbarPartial 文件。

<nav id="navbar" class="navbar">
      <ul class="navigation-bar">
           <li><a class="active" href="/Home/Index">Home</a></li>
           <li><a href="/Home/About Us">About Us</a></li>
           <li><a href="/Home/Projects">Projects</a></li>
      </ul>
    <i class="bi bi-list mobile-nav-toggle"></i>
</nav><!-- .navbar -->

我该如何解决这个问题?

$(document).ready(() => {
  $(".somClass li a").on('click', (e) => {
    $(".somClass li a").removeClass('active');
    $(e.target).addClass('active');
  });
});
.active {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="somClass">
  <li><a class="active" href="#">link 1</a></li>
  <li><a href="#">link 2</a></li>
  <li><a href="#">link 3</a></li>
</ul>

因为你有活跃的 class 作为锚元素的支柱你应该尝试使用 .navigation-bar li a 而不是

您要在 li 元素上添加 active class。它应该添加到 a 元素中。以下应该有效:

<script type="text/javascript">

    $(document).ready(function () {
        $(".navigation-bar li a").on("click", function () {
            $(".navigation-bar li a").removeClass("active");
            $(this).addClass("active");
        });
    });

</script>

但它会失败,因为您正在切换页面,并且每次单击锚元素时 javascript 都会重新加载。

我想这就是你要找的:

var current = location.pathname;
$('.navigation-bar li a').each(function(){
    var $this = $(this);
    
    if($this.attr('href').indexOf(current) !== -1){
        $this.addClass('active');
    }
})

它基本上搜索当前处于活动状态的导航元素,在 a 元素上添加 active class。

解决方法如下:

导航栏

<nav id="navbar" class="navbar">
            <ul class="navigation-bar">
                <li><a href="/Home/Index">AnaSayfa</a></li>
                <li><a href="/Home/Hakkimizda">Hakkımızda</a></li>
                <li><a href="/Home/Hizmetler">Hizmetler</a></li>
                <li><a href="/Content/SiteLayout/portfolio.html">Portfolio</a></li>
                <li><a href="/Content/SiteLayout/blog.html">Blog</a></li>
                <li><a href="/Home/BizKimiz">Biz Kimiz</a></li>
                <li><a href="/Home/Iletisim">Bize Ulaşın</a></li>
            </ul>
            <i class="bi bi-list mobile-nav-toggle"></i>
        </nav><!-- .navbar -->

js文件

$(document).ready(function () {
    var current = location.pathname;

    $('.navigation-bar li a').each(function () {
        
        var $this = $(this);

        if($this.attr('href').indexOf(current) !== -1){
            $this.addClass('active');
        }
    })
});