在我的导航菜单中,我有一个我想要使用的下拉列表。实际下降很好,我使用preventDefault();
阻止了自动冒泡,但现在下拉列表中的所有链接都不再有效。
如何设置以便下拉列表工作,不会冒泡并且下拉列表中的所有链接都有效?
编辑:我也使用event.stopPropagation()
也没有效果。这是怎么回事?!
这是我的代码:
// Toggle dropdowns
$('.menu-item-has-children').click(function(e){
e.preventDefault();
$(this).find('.sub-menu').toggleClass('open');
});
答案 0 :(得分:3)
要停止冒泡,请使用event.stopPropagation()
。
仅使用event.preventDefault()
来阻止事件的默认操作发生。
#
的锚点,因此文档将滚动到顶部。
为避免这种情况,我建议删除href="#"
。
或者,只有当被点击的元素是该元素而不是后代时,才可以使用preventDefault
:
$('.menu-item-has-children').on('click', function(e){
if(this == e.target) e.stopPropagation();
// ...
});
答案 1 :(得分:0)
您可以使用e.target检查单击了哪个元素,如果单击的元素是子菜单链接,请不要阻止默认