【发布时间】:2018-10-13 23:58:24
【问题描述】:
我有一个包含许多父子菜单项的菜单栏:
<nav>
<ul>
<li class="menu-item-has-children">
<a href="#">Parent item</a>
<ul>
<li><a href="#">Child item</a></li>
<li><a href="#">Child item</a></li>
</ul>
</li>
<li class="menu-item-has-children">
<a href="#">Parent item</a>
<ul>
<li><a href="#">Child item</a></li>
<li><a href="#">Child item</a></li>
</ul>
</li>
</ul>
</nav>
子菜单默认隐藏:
.menu-item-has-children > ul {
display: none;
}
我想实现以下目标:
- 单击顶级菜单项时,我想切换(显示/隐藏)其关联的子菜单并隐藏可能打开的任何其他子菜单。
- 当点击页面上除子菜单或其父项之外的任何其他位置时,我想隐藏所有子菜单。
我正在使用以下代码,但不是显示正确的子菜单,而是显示/隐藏所有子菜单:
$(document).on('click', function(e) {
if($(e.target).parent().hasClass('menu-item-has-children')) {
$(this).find('ul').show();
} else {
$('.menu-item-has-children > ul').toggle();
}
});
见小提琴:https://jsfiddle.net/gs9q6kwh/
知道我做错了什么吗?
【问题讨论】:
标签: jquery