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>

如此,就大功告成了.

 

转载于:https://www.cnblogs.com/wphl-27/p/6386244.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现el-menu二级菜单选中后一级菜单也高亮,可以通过以下步骤: 1. 在el-menu组件上设置default-active属性,将一级菜单的默认选中设置为需要高亮的一级菜单。 ```vue <el-menu default-active="home"> <!-- 菜单 --> </el-menu> ``` 2. 在二级菜单el-menu-item-group中使用index属性绑定一级菜单的值,当二级菜单选中时,通过index将选中的值传递给一级菜单进行高亮。 ```vue <el-menu default-active="home"> <el-menu-item group-title="Home" index="home">首页</el-menu-item> <el-menu-item-group title="分类"> <el-menu-item index="food">美食</el-menu-item> <el-menu-item index="travel">旅行</el-menu-item> </el-menu-item-group> </el-menu> ``` 3. 在computed计算属性中定义一个值,当二级菜单选中时将index的值赋给这个属性,在一级菜单的class属性中绑定这个计算属性,并根据是否和选中的值相等来决定是否高亮。 ```vue <el-menu default-active="home"> <el-menu-item :class="{'active': activeItem === 'home'}" index="home">首页</el-menu-item> <el-menu-item-group title="分类"> <el-menu-item :class="{'active': activeItem === 'food'}" index="food">美食</el-menu-item> <el-menu-item :class="{'active': activeItem === 'travel'}" index="travel">旅行</el-menu-item> </el-menu-item-group> </el-menu> ``` ```javascript exports default { computed: { activeItem() { return this.$route.query && this.$route.query.index } } } ``` 通过以上步骤,当选中二级菜单时,一级菜单对应的也会高亮显示

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值