jQuery实现多级导航栏高亮显示

应用在何处?

当点击导航栏时,高亮显示用户处于哪一分类下
例如:用户在首页时
首页
用户跳转到其他分类导航下
校友捐赠
并且当点击某个分类的子类下,仍然高亮显示所在分类
在这里插入图片描述

实现代码

导航栏代码(方便观看只贴了两个分类菜单,)
class=“nav_bg” 是默认显示
class="nav_bg cur"是高亮显示
默认都为nav_bg

 <table border="0" cellspacing="0" cellpadding="0" class="dh" style=" text-align:center; ">
            <tbody>
            <tr>
              <td class="nav_bg"  rel="index">
                <a href="www.xxx.com">首页 <span>Home</span></a>
              </td>
              ........
              <td class="nav_bg " rel="Donation" >
                <a href="www.xxx.com/src/Donation/donationlist.html">校友捐赠 <span>Donation</span>	     </a>
              </td>
             .........
            </tr>
            </tbody>
          </table>

jQuery代码
讲一下代码的思路,lochref.indexOf(me.parent().attr('rel'))!= -1 这个是为了判断除了首页外所有的页面,包括每个导航菜单的子菜单。因为在导航栏的代码中每一个中都设置了rel属性,如果我点击了“校友捐赠”这个菜单,就会判断我的“校友捐赠”这个页面的url是否包含了我设置的rel=“donation”这个值,所以只要“校友捐赠”这个菜单和子菜单中的url中包含donation这个单词就行。
类似这样:www.xxx.com/src/Donation/donationlist.html
www.xxx.com/src/Donation/donationway.html
访问这两个url时都能使“校友捐赠”这个菜单高亮

而如果是首页的话,首页的url一般都是www.xxx.com,无法设置专门的rel来判断,因为每个页面都包含www.xxx.com,所以使用最简单的判断 lochref == mehref 当前访问的url如果与导航栏代码中设置的链接href一样时就高亮

<script>
  $(function () {

    //trim() 方法用于删除字符串的头尾空格。
    var lochref = $.trim(window.location.href);// 获得当前页面的URL
    $(".dh tbody tr td a").each(function (i) { /获取导航栏中每个a标签
      var me = $(this);
      var mehref = $.trim(me.get(0).href);//获得每个<a>的url
      /*判断当前url是否包含每个导航特定的rel  lochref == mehref是为了专门判断首页  */
      if (lochref.indexOf(me.parent().attr('rel')) != -1 || lochref == mehref) {
        me.parent().addClass("cur");
      } else {
        me.parent().removeClass("cur");
      }
    });
  });
</script>

css代码

<style>
.cur {
    background-color: #e0a83d;
  }
 .cur a {
    color: #000000;
    font-weight: bold;
 }
  .nav_bg:hover {
    background: #97600d repeat-x;
 }
</style>

总结
后端写前端——这都是啥?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值