基于jquery实现导航菜单高亮显示(两种方法)

增加 减小] 类型:转载 时间:2015-08-23


本篇文章是基于jquery实现导航菜单高亮显示,当点击不同导航菜单实现当前点击的菜单是高亮的,有需要的朋友可以关注下本文


项目需求:

实现原理:当选中当前元素时,给当前元素添加样式,同级元素移除样式。

点击不同的导航菜单实现当前点击的菜单是高亮的,点击导航下面的某个分类,分类所属的导航也必须是高亮的,点击某一篇文章,文章所属的导航菜单也必须是高亮的.

效果图如下:

jquery 多级菜单导航 jquery导航菜单代码_html

示例代码一:

具体示例代码如下:





<!DOCTYPE html PUBLIC            "-//W3C//DTD XHTML 1.0 Transitional//EN"            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"           >          


           <html xmlns=           "http://www.w3.org/1999/xhtml"           >          


           <head>          


           <meta http-equiv=           "Content-Type"           content=           "text/html; charset=utf-8"            />          


           <title>我爱学习</title>          


           <style>          


           body,ul,ol,li,div,p{margin:0px;padding:0px;}          


           ul{list-style-type:none;border:1px solid blue;background:           #4f5b93;height:45px;}          


           ul li{float:left;heihgt:45px;line-height:45px;width:100px;text-align:center;}          


           ul li a:link,a:visited{color:           #fff;text-decoration:none;}          


           .act{background:           #ff6600;}          


           </style>          


           <script src=           "../jquery.js"           ></script>          


           <script>          


           $(           function           (){          


           $(           'ul li'           ).eq(0).addClass(           "act"           );          


                      $(           'ul li'           ).each(           function           (){          


                      $(           this           ).click(           function           (){          


                      $(           this           ).addClass(           "act"           ).siblings().removeClass(           "act"           );          


                      })          


                      })          


           })          


           </script>          


           </head>          


           <body>          


           <ul>          


           <li><a href=           "http://www.52aixuexi.com/"           >首页</a></li>          


           <li><a href=           "http://www.52aixuexi.com/wdwzml/suibi/"           >随笔</a></li>          


           <li><a href=           "http://www.52aixuexi.com/wdwzml/sucai/"           >素材</a></li>          


           <li><a href=           "http://www.52aixuexi.com/wdwzml/biancheng/"           >编程</a></li>          


           </ul>          


           </body>          


           </html>




示例代码二:

在菜单层的链接加上一个rel属性,保存href属性即:




<div id=           "menu"           class=           "main-nav"           >          


                      <dl>          


                      <dt><a href=           "/C000001916"           class=           "current"           >首页<span class=           "mnl"           ></span></a></dt>          


                      </dl>          


                      <dl>          


                      <dt><a href=           "/C000001919?lmbm=1"           <span style=           "color: #ff0000;"           >rel=           "/C000001919?lmbm=1"           </span>>新闻中心<span class=           "mnl"           ></span></a></dt>          


                      <dd class=           "sn-c"           >          


                      <a href=           "#"           >产品理念2</a>          


                      <em>|</em>          


                      <a href=           "#"           >发展历程</a>          


                      <em>|</em>          


                      <a href=           "#"           >应用范围</a>          


                      <em>|</em>          


                      <a href=           "#"           >技术架构</a>          


                      </dd>          


                      </dl>          


                      <dl>          


                      <dt><a href=           "/C000001919?lmbm=2"           <span style=           "color: #ff0000;"           >rel=           "/C000001919?lmbm=2"           </span>>产品介绍<span class=           "mnl"           ></span></a></dt>          


                      <dd class=           "sn-c sn3"           >          


                      <a href=           "#"           >产品理念</a>          


                      <em>|</em>          


                      <a href=           "#"           >发展历程3</a>          


                      <em>|</em>          


                      <a href=           "#"           >应用范围</a>          


                      <em>|</em>          


                      <a href=           "#"           >技术架构</a>          


                      </dd>          


                      </dl>          


                      </div>




  然后利用浏览器地址栏中的URL和rel对比,如果相等就在当前的<a>标签加上class,同时移除其它<a>标签的class.<script type="text/javascript">





var           urlstr = location.href;               //获取浏览器的url          


                      var           urlstatus=           false           ;                   //标记          


                      //遍历导航div          


                      $(           "#menu a"           ).each(           function           () {          


           //判断导航里面的rel和url地址是否相等          


                      if           ((urlstr +            '/'           ).indexOf($(           this           ).attr(           'rel'           )) > -1&&$(           this           ).attr(           'rel'           )!=           ''           ) {          


                      $(           this           ).addClass(           'cur'           ); urlstatus =            true           ;          


                      }           else           {          


                      $(           this           ).removeClass(           'cur'           );          


                      }          


                      });          


           //当前样式保持          


                      if           (!urlstatus) {$(           "#menu a"           ).eq(0).addClass(           'cur'           ); }          


           </script>



这个也能基本实现效果,但是如果在导航下如果有分类,如图.这样分类url和导航的url就不能匹配了,然后新闻的url和导航的url也不能匹配.所以还是有点扯淡.....那怎么办呢?

所以我的思路是这样的

既然url不一样,那就找导航-->分类-->新闻之间的关系了.他们的对应关系是一个导航下可能有多个分类,一个分类下可能有多篇新闻.那么逆向的来说,每一篇新闻或者分类都对应一个导航.那么在对应的的分类页面和新闻页面都定义一个变量就是导航标识.然后修改导航<div>的<a>标签的rel属性.该属性与该变量对比,如果一样就改当前的class.

<div class="menu">
<ul id='menu'>

<li id=''><a class="" href="first.html">首页</a></li>

<li id='first-menu'><a class="" href="second.html">second</a>
    <ul id='second-menu'>
    <li><a href="second-son1.html" >second-son1</a></li>
    <li><a href="second-son2.html" >second-son2</a></li>    
    </ul>
</li>

<li id='first-menu'><a class="" href="third.html">third</a>
    <ul id='second-menu'>
    <li><a href="third-son1.html" >third-son1</a></li>     
    </ul>
</li>

<li id=''><a class="" href="fourth.html">fourth</a></li>

</ul>
</div>
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript">
  //设置变量urlstr为当前地址
  var urlstr = location.href; 

  //alert((urlstr + '/').indexOf($(this).attr('href')));
  //设置变量urlstatus为false
  var urlstatus=false;
  //循环遍历HTML DOM里id为menu下边所有的a标签
  $("#menu a").each(function (){
  //如果当前ur与a标签href属性相等并且当前href属性不为空 
    if ((urlstr + '/').indexOf($(this).attr('href')) > -1&&$(this).attr('href')!='') {
    //为当前a标签添加cur样式,设置urlstatus变量为true
      $(this).addClass('cur'); urlstatus = true;
    } else {
    //否则为当前a标签移除cur样式
      $(this).removeClass('cur');
    }
  });

  if($("#first-menu").has('ul') && $("#second-menu a").hasClass('cur')){ 
         $("#first-menu a").eq(0).addClass('cur'); urlstatus = true;         
  }   
//如果urlstatus为false,为html dom中id为menu 下的第一个a标签添加 cur样式
  if (!urlstatus) {$("#menu a").eq(0).addClass('cur'); }
</script>