基于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 相关文章推荐
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
Sep 19 Javascript
javaScript(JS)替换节点实现思路介绍
Apr 17 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
Sep 10 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
jquery datatable服务端分页
Aug 31 Javascript
JS中跳出循环的示例代码
Sep 14 Javascript
js构建二叉树进行数值数组的去重与优化详解
Mar 26 Javascript
微信小程序使用component自定义toast弹窗效果
Nov 27 Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
Sep 05 Javascript
vue设置默认首页的操作
Aug 12 Javascript
Vue Element校验validate的实例
Sep 21 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
利用JS实现数字增长
2016/07/28 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
利用vueJs实现图片轮播实例代码
2017/06/03 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python迭代器与生成器详解
2016/03/10 Python
Python中list初始化方法示例
2016/09/18 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
numpy中矩阵合并的实例
2018/06/15 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
售后服务承诺书
2014/03/26 职场文书
工程承包协议书
2014/10/20 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS