JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
发布时间 - 2026-01-11 01:30:16 点击率:次一.概述

本文介绍了JQuery巧妙实现多级菜单中当前菜单不随页面跳转样式发生变化,貌似没看懂啥意思?
看图说话:就是点二级或多级菜单时,父级展开,当前菜单是被选中状态,这下明白了吧?
二.应用场景
当一个项目使用公共模板文件时(如上图的左侧菜单栏),我们给每个子菜单添加链接时,点击页面跳转样后还是公共模板的样式,这时就需要实现动态加载当前菜单的样式。
三.实现方法
第一种:.通过php传递变量,模板页面通过接收这些变量来实现当前页面的菜单选中与否,父级展开等这些样式
缺点:虽然实现简单,但是每个页面都需要php传递变量,很繁琐,这种方法不推荐,故不再赘述!
第二种:通过比对当前菜单里的a标签的href值与浏览器的url的值,判断a标签里href属性值是属于浏览器url中的一部分,即表示包含该a标签的菜单应该时被选中状态,在将样式赋予该菜单及对应的父级菜单。
四.举个栗子
<ul class="sidebar-menu">
<li class="header">主菜单</li>
<li class="treeview">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<i class="fa fa-users"></i> <span>用户管理</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="{{ path('agent') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 代理商</a></li>
<li><a href="{{ path('client') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 委托人</a></li>
<li><a href="{{ path('cs_staff') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 客服</a></li>
<li><a href="{{ path('admin') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 管理员</a></li>
</ul>
</li>
<li class="treeview">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<i class="fa fa-bicycle"></i> <span>车辆管理</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="{{ path('bike') }}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 单车</a></li>
</ul>
</li>
<li class="treeview">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" >
<i class="fa fa-fw fa-cny"></i> <span>统计报表</span>
<span class="pull-right-container">
<i class="fa fa-angle-left pull-right"></i>
</span>
</a>
<ul class="treeview-menu">
<li><a href="{{ path('report')}}" rel="external nofollow" ><i class="fa fa-circle-o"></i> 单车收益</a></li>
</ul>
</li>
</ul>
注:上述样式是bootstamp的样式
如果当前页面是管理员页,那个给所对应的li添加class="active"的属性,父级ul的样式由style="display: none;"修改为style="display: block;",ul的父级再添加class="active"的属性,即有了图一的效果。
以下是我写的js实现代码,放在公共js文件即可
var CURRENT_URL = window.location.href.split('?')[0];
CURRENT_URL_ARR=CURRENT_URL.split("/",6);
for (i=0;i<CURRENT_URL_ARR.length ;i++ ){
TEM_URL = CURRENT_URL_ARR.join(",");
TEM_URL = TEM_URL.replace(/,/g,"/");
$('.sidebar-menu').find('a').filter(function () {
return this.href ==TEM_URL+"/";
}).parent('li').addClass('active').parent('ul').css("display","block").parent('li').addClass('active');
CURRENT_URL_ARR.pop();
}
解释:
第1行:取得当前url?前的地址,去除url参数
alert(CURRENT_URL);
结果为:http://partner.bike.lc/admin/
第2行:把url里按“/”再次分割成字符串数组,后面的6为了精确的找到对应控制器及方法,按需设着
alert(CURRENT_URL_ARR);
结果为:http:,,partner.bike.lc,admin,
第3行:循环匹配url
第4行:再将数组转化为字符串
aert(TEM_URL);
循环得到的结果依次为:
http:,,partner.bike.lc,admin, http:,,partner.bike.lc,admin http:,,partner.bike.lc ...
第5行:将上一步字符串转化为URL形式
aert(TEM_URL);
循环得到的结果依次为:
http://partner.bike.lc/admin/
http://partner.bike.lc/admin
http://partner.bike.lc
...
第6-10行:遍历菜单栏里的所有a标签,判断循环里的url是否有等于a标签的href值,如果有加上所需的样式
注:
this.href得到的是完整的URL地址;
pop用于删除并返回数组的最后一个元素,此步很重要。
好了,以上所述是小编给大家介绍的JS实现多级菜单中当前菜单不随页面跳转样式而发生变化 。不知道大家理解了没有。主要是理解实现思路,样式可根据自身情况调整~
# js实现多级菜单
# JS+CSS实现的简单折叠展开多级菜单效果
# JavaScript实现带箭头标识的多级下拉菜单效果
# JavaScript实现向右伸出的多级网页菜单效果
# JavaScript多级判定代码优化浅析
# 跳转
# 转化为
# 依次为
# 的是
# 好了
# 放在
# 客服
# 遍历
# 菜单中
# 所需
# 给大家
# 很重要
# 这下
# 来实现
# 我写
# 所述
# 再将
# 第二种
# 小编
# 第一种
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Gate和Policy进行授权?(权限控制)
如何在IIS服务器上快速部署高效网站?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何在阿里云域名上完成建站全流程?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
如何快速搭建高效WAP手机网站吸引移动用户?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何在服务器上配置二级域名建站?
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Android滚轮选择时间控件使用详解
Laravel如何使用Service Container和依赖注入?(代码示例)
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在万网利用已有域名快速建站?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
JavaScript如何实现音频处理_Web Audio API如何工作?
制作旅游网站html,怎样注册旅游网站?
Android GridView 滑动条设置一直显示状态(推荐)
Laravel如何实现API速率限制?(Rate Limiting教程)
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
WEB开发之注册页面验证码倒计时代码的实现
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
Laravel storage目录权限问题_Laravel文件写入权限设置
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Firefox Developer Edition开发者版本入口
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
大同网页,大同瑞慈医院官网?
教你用AI润色文章,让你的文字表达更专业
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何用虚拟主机快速搭建网站?详细步骤解析
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
,南京靠谱的征婚网站?
如何挑选最适合建站的高性能VPS主机?
Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】
如何在宝塔面板创建新站点?
如何选择PHP开源工具快速搭建网站?

