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


Posted in Javascript onAugust 23, 2015

项目需求:

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

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

效果图如下:

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

示例代码一:

具体示例代码如下:

<!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.

以上内容就是通过两种方式给大家介绍基于jquery实现导航菜单高亮显示,希望对大家有所帮助。

Javascript 相关文章推荐
jquery 可拖拽的窗体控件实现代码
Mar 21 Javascript
json格式化/压缩工具 Chrome插件扩展版
May 25 Javascript
javascript跨域总结之window.name实现的跨域数据传输
Nov 01 Javascript
如何判断Javascript对象是否存在的简单实例
May 18 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
AngularJS 入门教程之事件处理器详解
Aug 19 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
Feb 14 Javascript
详解如何在React组件“外”使用父组件的Props
Jan 12 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
如何在vue里添加好看的lottie动画
Aug 02 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
Apr 04 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
CSS javascript 结合实现悬浮固定菜单效果
Aug 23 #Javascript
微信JSSDK上传图片
Aug 23 #Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 #Javascript
jquery+css实现绚丽的横向二级下拉菜单-附源码下载
Aug 23 #Javascript
jquery ajax 如何向jsp提交表单数据
Aug 23 #Javascript
纯HTML5制作围住神经猫游戏-附源码下载
Aug 23 #Javascript
javascript中Array()数组函数详解
Aug 23 #Javascript
You might like
php在字符串中查找另一个字符串
2008/11/19 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
JavaScript中的闭包
2016/02/24 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JS实现页面打印(整体、局部)
2017/08/18 Javascript
Vue-Router2.X多种路由实现方式总结
2018/02/09 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
vue实现登录拦截
2020/06/29 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
vue+iview分页组件的封装
2020/11/17 Vue.js
python 图片验证码代码
2008/12/07 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
课改先进个人汇报材料
2014/01/26 职场文书
信息科学与技术专业求职信范文
2014/02/20 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
教师读书活动总结
2014/05/07 职场文书
户籍证明模板
2014/09/28 职场文书
升学宴答谢词
2015/01/05 职场文书
个人培训总结
2015/03/05 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis