我的html看起来像这样:
<ul>
<li class="database">Item One
<ul>
<li>Sub One</li>
<li>Sub Two</li>
<li>Sub Three</li>
</ul>
</li>
<li class="database">Item Two
<ul>
<li>Sub One</li>
<li>Sub Two</li>
<li>Sub Three</li>
</ul>
</li>
<ul>
然后我创建了这个JavaScript,以便在点击时隐藏/显示子列表。
$(document).on('click', 'li.database', function (e) {
e.stopPropagation();
$(this).children('ul').children('li').toggle();
});
它有效,但无论是否点击子菜单,它都会隐藏列表。如何仅在单击根li
时隐藏项目?我想最终让子项在点击时有自己的事件。
答案 0 :(得分:2)
检查点击了哪个target
。 e.target
。
在子项目的点击事件中使用e.stopPropagation()
。
答案 1 :(得分:2)
您可以查看e.target
是否与e.currentTarget
相同。
这是有效的,因为e.target
是触发事件的元素,e.currentTarget
是事件监听器附加到的元素。
$(document).on('click', 'li.database', function (e) {
if (e.target === e.currentTarget) {
$(this).children('ul').children('li').toggle();
}
});
答案 2 :(得分:0)
尝试创建id标记并引用而不是类名。这样您就可以通过id分隔数据库。