在开发后台管理系统时,菜单的高亮效果是一个很常见的需求。它可以帮助用户快速识别当前所在的页面,提升用户体验。AdminLTE 是一个流行的后台管理模板,它提供了丰富的 UI 组件和功能,但默认情况下,菜单的高亮效果需要我们自己实现。
下面是一个简单的 JavaScript 代码示例,用于在 AdminLTE3 中实现动态菜单高亮效果。这段代码会根据当前页面的 URL,自动为对应的菜单项添加高亮样式。
<script>
$(function () {
/** add active class and stay opened when selected */
var url = window.location;
// for sidebar menu entirely but not cover treeview
$('ul.nav-sidebar a').filter(function () {
return this.href == url;
}).addClass('active');
// for treeview
$('ul.nav-treeview a').filter(function () {
return this.href == url;
}).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');
});
</script>
代码解析
- 获取当前 URL:通过
window.location
获取当前页面的 URL。 - 普通菜单高亮:通过
ul.nav-sidebar a
选择器找到所有侧边栏菜单项,然后使用filter
方法筛选出与当前 URL 匹配的菜单项,并为其添加active
类。 - 树形菜单高亮:对于树形菜单(通常是有子菜单的项),代码会先找到匹配的菜单项,然后向上查找父级元素,添加
menu-open
类以展开菜单,同时为父级链接添加active
类。
如果你用的是 AdminLTE2,那么可以使用下面的代码:
<script>
$(document).ready(function () {
/** add active class and stay opened when selected */
var url = window.location;
// for sidebar menu entirely but not cover treeview
$('ul.sidebar-menu a').filter(function () {
return this.href == url;
}).parent().siblings().removeClass('active').end().addClass('active');
// for treeview
$('ul.treeview-menu a').filter(function () {
return this.href == url;
}).parentsUntil(".sidebar-menu > .treeview-menu").siblings().removeClass('active').end().addClass('active');
})
</script>