重定向到新页面时如何使 <li> 保持突出显示?

Posted

技术标签:

【中文标题】重定向到新页面时如何使 <li> 保持突出显示?【英文标题】:How to make <li> remain highlighted when redirected to new page? 【发布时间】:2020-01-22 23:01:10 【问题描述】:

我正在尝试在我的 index.html 中调用导航栏 (navbar.html)。 Navbar.html 有自己的 css,在 navbar.html 里面是一个脚本,当按下&lt;a&gt; 时会改变&lt;li&gt; 的类。

我已经设法使 &lt;li&gt; 更改突出显示,但是当我按下 &lt;a&gt; 时,新页面上不会保持突出显示。

索引.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    <title></title>
</head>

<body>
    <!--NAVIAGTION BAR-->
    <div id="navbar-placeholder">


    </div>


    <script>
        $(function()
            $("#navbar-placeholder").load("Files/navbar.html");
        );
    </script>
    <!--END OF NAVIGATION BAR-->
</body></html>

navbar.html

<link rel="stylesheet" href="css/navbar.css">
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

<div class="navigation">
    <ul>
        <li class=""><a href="work.html">Work</a></li>
        <li class="active"><a href="index.html">Home</a></li>
        <li class=""><a href="contact.html">Contact</a></li>
    </ul>
</div>


<script>
    $(document).ready(function() 
        $(".navigation li").click(function() 
            $(".navigation li").removeClass("active");
            $(this).addClass("active");
        );
    );

</script>

navbar.css

.navigation
    position: fixed;
    top: 0;
    width: 100%;
    background-color:#262126;
    text-align: center;


.navigation ul
    margin: 0;

.navigation li
    display: inline-block;
    padding: 15px 30px;
    margin: 10px 5px 0px 5px;
    text-decoration: none;
    font-size: 20px;
    font-family: 'Open Sans', sans-serif;


.navigation a
    color: white;
    text-decoration: none;
    text-transform: capitalize;


.navigation li:hover
    background-color: #F2F2F2;
    transition: 0.4s;


.navigation li:hover a
    color: black;


.navigation li.active
    background-color: #F2F2F2;

.navigation li.active a
    color: black;

【问题讨论】:

如果页面被重新加载然后看看 localStorage。 您想解析 url,然后在新页面加载时找到合适的href。易于研究如何解析 url。单击链接时没有必要更改当前页面中的类,除非它是单页应用程序 尝试在 url 中使用查询运算符 ? 或锚点 #。然后正如@charlietfl 所说,解析网址。 【参考方案1】:

逻辑是倒退的。在点击发生时添加类是没有意义的,因为您将立即离开该页面

当每个页面加载匹配当前location.href 到链接并添加类然后。

var $navItems = $(".navigation li").removeClass("active"); 

$navItems.filter(function()
  return $(this).find('a').prop('href') === location.href;
).addClass("active");

【讨论】:

在执行此操作时不要忘记删除站点 URL,否则它将不匹配。 @GrahamRitchie 不确定您的意思。 &lt;a&gt; 元素的 href property 是完整的 url .... 如果属性是相对 url,则与属性不同 你刚刚让我大开眼界!谢谢! > tfl,在谷歌搜索 4 秒后,我找到了 this this this this this 和无数其他人..

以上是关于重定向到新页面时如何使 <li> 保持突出显示?的主要内容,如果未能解决你的问题,请参考以下文章

重定向到新页面

aspx 页面重定向到新页面

如何通过 URL 更改而不是页面重定向进行 ajax 加载?

如何使按钮将我的页面重定向到另一个页面? [复制]

java重定向时如何保持地址栏不变

在重定向到新的 SPA 页面时在标头中传递身份验证令牌