Javascript实现页面左边的菜单选中项高亮显示

在项目开发过程中,遇到一个问题

在一个模板页面中,Layout.cshtml,页面左边放了一个菜单项menu,每一项都是一个链接到一个新的页面。但所有页面都是用这个模板Layout.cshtml。需要当你点击到menu上某一项时,该项应用css class "selected"高亮显示。

Layout.cshtml代码如下:

复制代码
<div class="sidebar-wrap">
              <ul class="sidebar-ul" id="ProductNav">
                  
                  <li>
                      <a class="selected" href="/product1">product1</a>
                  </li>
                   <li>
                      <a href="/product2">product2</a>
                  </li>
                  <li>
                      <a href="/product3">product3</a>
                  </li>
                   <li>
                      <a href="/product4">product4</a>
                  </li>
                  <li>
                      <a href="/product5">product5</a>
                  </li>
                   <li>
                      <a href="/product6">product6</a>
                  </li>
   
       
              </ul>
          </div>
复制代码

刚开始,我写了一个JavaScript脚本,如下:

复制代码
<div class="sidebar-wrap">
              <ul class="sidebar-ul" id="ProductNav">
                  
                  <li>
                      <a class="selected" href="/product1">product1</a>
                  </li>
                   <li>
                      <a href="/product2">product2</a>
                  </li>
                  <li>
                      <a href="/product3">product3</a>
                  </li>
                   <li>
                      <a href="/product4">product4</a>
                  </li>
                  <li>
                      <a href="/product5">product5</a>
                  </li>
                   <li>
                      <a href="/product6">product6</a>
                  </li>
   
       
              </ul>
          </div>

<script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script type='text/javascript'>
$(document).ready(function(){

$('#ProductNav li a').click(function(){

$('#ProductNav li a.selected').removeClass('selected');
$(this).addClass('selected');
});
});
</script>
复制代码

发现并不起作用,点击时,又回到原来的那个product1高亮显示。

原因很简单,因为每一次点击,比如点击product2,它就会进入一个新的页面product2,会重新加载一次Layout.cshtml,而这个javascript是在product1页面执行的,你点击product2,重新加载Layout.cshtml, 还是上面的代码,product1为selected

 

那么如何实现呢。弄了好久,终于发现一个简便的办法。当从product1页面,点击product2时,用window.location.pathname获取"/product2",从中取出product2. 然后在menu中的每个链接<a>中加上class,class名就是这个名(比如product2).

这样去匹配,匹配上的,就说明是当前页面,就加上css "selected"

具体如下

 

复制代码
<div class="sidebar-wrap">
              <ul class="sidebar-ul" id="ProductNav">
                  
                  <li>
                      <a class="product1" href="/product1">product1</a>
                  </li>
                   <li>
                      <a class="product2" href="/product2">product2</a>
                  </li>
                  <li>
                      <a class="product3" href="/product3">product3</a>
                  </li>
                   <li>
                      <a class="product4" href="/product4">product4</a>
                  </li>
                  <li>
                      <a class="product5" href="/product5">product5</a>
                  </li>
                   <li>
                      <a class="product6" href="/product6">product6</a>
                  </li>
   
       
              </ul>
          </div>
复制代码

新的JavaScript如下

复制代码
<script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        var path = window.location.pathname;
        path = path.replace('/', '');
        $("." + path).addClass('selected');

    });

</script>
复制代码

如此,就大功告成了.

 

posted on   新西兰程序员  阅读(402)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示