基于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 UI的Dialog无法提交问题的解决方法
Jan 11 Javascript
javascript学习笔记(三)显示当时时间的代码
Apr 08 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
Jun 02 Javascript
jQuery大于号(&gt;)选择器的作用解释
Jan 13 Javascript
JavaScript实现的简单幂函数实例
Apr 17 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
AngularJs实现ng1.3+表单验证
Dec 10 Javascript
Vue计算属性的学习笔记
Mar 22 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
微信小程序使用radio显示单选项功能【附源码下载】
Dec 11 Javascript
vue-admin-template配置快捷导航的代码(标签导航栏)
Sep 04 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数组函数序列之array_unshift() 在数组开头插入一个或多个元素
2011/11/07 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
php正则替换处理HTML页面的方法
2015/06/17 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
基于jquery tab切换(防止页面刷新)
2012/05/23 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
python Django中models进行模糊查询的示例
2019/07/18 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
服务员岗位责任制
2014/02/11 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
教师工作态度自我评价
2015/03/05 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL