首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我切换到另一个页面时,如何将焦点放在导航栏中的项目上?

问当我切换到另一个页面时,如何将焦点放在导航栏中的项目上?
EN

Stack Overflow用户
提问于 2020-11-20 00:10:36
回答 2查看 188关注 0票数 0

当我在不同的页面上时,我会使用jQuery在导航链接上添加一些效果。但每次我跳转到下一页时,它都会刷新网站。我怎么才能在我所在的页面上取得效果呢?

下面是一个例子。

代码语言:javascript
复制
<nav class="control-panel">
  <ul>
    <li class="nav-item">
      <a href="./index.html" class="nav-link">Dashboard</a>
    </li>
    <li class="nav-item">
      <a href="./assignment.html" class="nav-link">Assignment</a>
    </li>
  </ul>
</nav>
代码语言:javascript
复制
.nav-link{
  color: green;
}
.nav-link--active{
  color: red;
}
代码语言:javascript
复制
$(document).ready(function () {
  $(".nav-link").click(function (e) {
    $(this)
      .addClass("nav-link--active")
      .parent()
      .siblings()
      .find(".nav-link")
      .removeClass("nav-link--active");
  });
});

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-20 00:29:38

您当前只是在click事件上向nav-link项添加了一个类。这只有在你保持一致的情况下才会起作用。一旦您加载另一个页面,该状态就会丢失。您需要在页面加载上添加相同的功能(添加active类)。

首先,您需要使用以下命令获取当前路径

代码语言:javascript
复制
let path = window.location.pathname;

假设您的URL是https://www.example.com/index.html,window.location.pathname将返回/index.html

然后,您需要将其与nav-link中的href属性进行比较

代码语言:javascript
复制
$('.nav-link').each(function() {
   if(path === $(this).attr('href')) {
     $(this).addClass('active');
   }
});

总而言之:

代码语言:javascript
复制
$(document).ready(function() {
  let path = window.location.pathname;
  $('.nav-link').each(function() {
     if(path === $(this).attr('href')) {
       $(this).addClass('active');
     }
  });
});
票数 0
EN

Stack Overflow用户

发布于 2020-11-20 00:23:37

一种选择是将链接文本存储在localStorage中,并在导航后加载DOM后使用它将样式添加到适当的链接:

代码语言:javascript
复制
$(document).ready(function () {
    $(".nav-link").click(function (e) {
      //Save the link text in localStorage for use in styling after a page refresh/navigation
      localStorage.setItem('linktext', $(this).text());       
    });
    //If localStorage has the key, set the appropriate link style
    if(localStorage.getItem("linktext") !== null){
        $('.nav-link').each(function(){
             if($(this).text() === localStorage.getItem("linktext")){
                 //Set your styling on this anchor element
             }
        });
    }
});

您也可以使用sessionStorage或cookie。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64915536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档