【发布时间】:2015-12-23 21:19:12
【问题描述】:
我正在尝试从一个简单的嵌套列表构建一个简单的下拉菜单。
我想做两件事:
- 当一个链接被点击时,toggleClass 它的父 li 带有 '.open'
- 当用户点击上述以外的任何地方时,从所有 li 中删除 '.open' 类
HTML 应该如下所示:
<ul>
<li class="parent-item">
<a href="#">Link</a>
<ul>
<li><a href="#">Child</a></li>
<li><a href="#">Child</a></li>
<li><a href="#">Child</a></li>
</ul>
</li>
<li><a href="#">Link</a></li>
<li class="parent-item">
<a href="#">Link</a>
<ul>
<li><a href="#">Child</a></li>
<li><a href="#">Child</a></li>
<li><a href="#">Child</a></li>
</ul>
</li>
</ul>
jQuery 看起来像这样:
$('html').click(function(e) {
$('.parent-item').removeClass('open');
if($(e.target).parent().hasClass('parent-item')) {
e.preventDefault();
$(e.target).parent().toggleClass('open');
}
});
removeClass 线干扰了 toggleClass 线,阻止了 toggleClass 在第二次点击时触发。
任何想法我做错了什么?
【问题讨论】:
-
谢谢。我完全了解它是如何工作的。
标签: jquery