基于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 相关文章推荐
关于extjs treepanel复选框选中父节点与子节点的问题
Apr 02 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 Javascript
简单谈谈javascript代码复用模式
Jan 28 Javascript
Highcharts学习之数据列
Aug 03 Javascript
node.js版本管理工具n无效的原理和解决方法
Nov 24 Javascript
关于Angular2 + node接口调试的解决方案
May 28 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
Aug 17 Javascript
JavaScript实现异步图像上传功能
Jul 12 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
Sep 03 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
Apr 08 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 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下的权限算法的实现
2007/04/28 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
HTML DOM的nodeType值介绍
2011/03/31 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
利用jquery如何从json中读取数据追加到html中
2017/12/01 jQuery
11行JS代码制作二维码生成功能
2018/03/09 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
JavaScript面向对象继承原理与实现方法分析
2018/08/09 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
详解vue-cli3多页应用改造
2019/06/04 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
python检测远程端口是否打开的方法
2015/03/14 Python
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python创建属于自己的单词词库 便于背单词
2019/07/30 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
Python多分支if语句的使用
2020/09/03 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
澳洲在线厨具商店:Kitchen Style
2018/05/05 全球购物
专业幼师实习生自我鉴定范文
2013/12/08 职场文书
公司董事长职责
2013/12/12 职场文书
普通大学毕业生自荐信范文
2014/02/23 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
售票员岗位职责
2015/02/15 职场文书
应急管理工作总结2015
2015/05/04 职场文书