无限分类折叠菜单是一种常见的前端交互设计,用于展示层级结构的数据。它允许用户通过点击展开或折叠子菜单项,从而清晰地查看和管理多层次的分类信息。
以下是一个简单的JavaScript实现无限分类折叠菜单的示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>无限分类折叠菜单</title>
<style>
ul {
list-style-type: none;
padding-left: 20px;
}
.menu-item {
cursor: pointer;
}
.submenu {
display: none;
}
</style>
</head>
<body>
<ul id="menu">
<!-- 示例数据 -->
<li class="menu-item">菜单1
<ul class="submenu">
<li class="menu-item">子菜单1-1</li>
<li class="menu-item">子菜单1-2</li>
</ul>
</li>
<li class="menu-item">菜单2
<ul class="submenu">
<li class="menu-item">子菜单2-1
<ul class="submenu">
<li class="menu-item">子菜单2-1-1</li>
</ul>
</li>
<li class="menu-item">子菜单2-2</li>
</ul>
</li>
</ul>
<script>
document.addEventListener('DOMContentLoaded', function() {
const menuItems = document.querySelectorAll('.menu-item');
menuItems.forEach(item => {
item.addEventListener('click', function(event) {
event.stopPropagation();
const submenu = this.querySelector('.submenu');
if (submenu) {
submenu.style.display = submenu.style.display === 'block' ? 'none' : 'block';
}
});
});
});
</script>
</body>
</html>
原因:可能是事件冒泡导致的多次触发,或者是CSS样式设置不正确。
解决方法:
event.stopPropagation()
阻止事件冒泡。.submenu
的初始样式为display: none;
。原因:动态加载的数据可能没有正确绑定事件监听器。
解决方法:
原因:一次性加载大量数据会导致页面卡顿。
解决方法:
通过以上方法,可以有效解决无限分类折叠菜单在实际应用中可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云