jQuery 3级垂直菜单是一种常见的网页导航组件,它允许用户通过垂直排列的菜单项进行多层级导航。这种菜单通常具有以下特点:
<div class="vertical-menu">
<ul class="menu-level-1">
<li>
<a href="#">一级菜单1</a>
<ul class="menu-level-2">
<li>
<a href="#">二级菜单1-1</a>
<ul class="menu-level-3">
<li><a href="#">三级菜单1-1-1</a></li>
<li><a href="#">三级菜单1-1-2</a></li>
</ul>
</li>
<li><a href="#">二级菜单1-2</a></li>
</ul>
</li>
<li>
<a href="#">一级菜单2</a>
<ul class="menu-level-2">
<li><a href="#">二级菜单2-1</a></li>
<li><a href="#">二级菜单2-2</a></li>
</ul>
</li>
</ul>
</div>
.vertical-menu {
width: 200px;
font-family: Arial, sans-serif;
}
.vertical-menu ul {
list-style: none;
padding: 0;
margin: 0;
}
.vertical-menu li {
position: relative;
}
.vertical-menu a {
display: block;
padding: 10px 15px;
color: #333;
text-decoration: none;
background: #f5f5f5;
border-bottom: 1px solid #ddd;
}
.vertical-menu a:hover {
background: #e5e5e5;
}
/* 子菜单默认隐藏 */
.menu-level-2, .menu-level-3 {
display: none;
}
/* 子菜单缩进 */
.menu-level-2 {
margin-left: 20px;
}
.menu-level-3 {
margin-left: 20px;
}
$(document).ready(function() {
// 一级菜单点击事件
$('.menu-level-1 > li > a').click(function(e) {
e.preventDefault();
var $subMenu = $(this).next('.menu-level-2');
// 关闭其他一级菜单的子菜单
$('.menu-level-1 > li > .menu-level-2').not($subMenu).slideUp();
// 切换当前子菜单
$subMenu.slideToggle();
// 关闭所有三级菜单
$subMenu.find('.menu-level-3').slideUp();
});
// 二级菜单点击事件
$('.menu-level-2 > li > a').click(function(e) {
e.preventDefault();
var $subMenu = $(this).next('.menu-level-3');
// 关闭其他二级菜单的子菜单
$(this).parent().siblings().find('.menu-level-3').slideUp();
// 切换当前子菜单
$subMenu.slideToggle();
});
});
原因:CSS和jQuery动画冲突
解决:确保CSS中设置了display: none
来初始隐藏子菜单
原因:没有阻止默认的链接行为
解决:在jQuery事件处理中使用e.preventDefault()
原因:CSS定位问题
解决:确保父菜单项设置了position: relative
,子菜单使用正确的定位方式
解决:可以添加触摸事件支持或改用点击事件
// 添加触摸事件支持
$('.menu-level-1 > li > a').on('click touchstart', function(e) {
e.preventDefault();
// 其余代码...
});
// 键盘导航支持示例
$(document).keydown(function(e) {
if (e.keyCode == 37) { // 左箭头
// 关闭当前子菜单
$('.menu-level-2:visible, .menu-level-3:visible').slideUp();
}
// 可以添加更多键盘控制逻辑
});
通过以上实现,您可以创建一个功能完善、用户体验良好的jQuery 3级垂直菜单。
没有搜到相关的文章