JQuery下拉菜单三个层次
JQuery dropdown menu three levels
我有一个三级菜单:
HTML:<ul class="main-menu">
<li><a href="#">About</a></li>
<li>
<a href="#">Blog</a>
<ul class="level2">
<li>
<a href="#">item1</a>
<ul class="level3">
<li><a href="#">item 3</a></li>
<li><a href="#">item 4</a></li>
</ul>
</li>
<li><a href="#">item2</a></li>
</ul>
</li>
<li><a href="#">Contact</a></li>
</ul>
CSS: .main-menu li a {
color: #000;
}
.level3,
.level2 {
display: none;
}
.main-menu li.active .level2 {
display: block;
}
.level2 li.active .level3 {
display: block;
}
脚本:
$('.main-menu > li').click(function () {
$(this).toggleClass('active');
});
$('.level2 > li').click(function () {
$(this).toggleClass('active');
});
问题是,当我点击第二层的元素时,第三层的列表不会打开。如何解决这个问题?如何重构不重复的代码?
演示使用 event.stopPropagation()
tp防止从子元素到父元素的事件冒泡。
$('.main-menu > li').click(function () {
$(this).toggleClass('active');
$('.level2 > li').removeClass('active');
});
$('.level2 > li').click(function (event) {
$(this).toggleClass('active');
event.stopPropagation();
});
相关文章:
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 如何使用PHP和JS级联三个下拉列表
- 灯光问题(使用三个.js)
- 在三个.js中创建球体(例如地球)的磁力线
- 什么'这是从第三个函数上的async 1st函数获得结果的更好方法
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 根据前两个下拉ID显示第三个下拉列表
- 在数组JS中查找三个重复项
- Meteor和S3:如何通过一次上传/编辑定义三个不同的图像
- 如何替换javascript字符串中的前三个连字符
- 保存两个模型(属于第三个模型)和一个提交
- 将文本字段限制为三个数字
- 三个js键盘旋转
- 匹配三个正则表达式中的任意一个,以先到的为准(在javascript中)
- 两个层次的手风琴除了第一次不起作用
- 加载模型与三个.js
- 连续三个检查宾果游戏
- 我需要帮助查找我的JavaScript小游戏中的错误(三个我没有得到的错误)
- JQuery下拉菜单三个层次