我使用stopPropagation创建链接到/#的父菜单项,以便在单击时显示下拉子菜单。单击时会显示子菜单,但在显示子菜单之前首先显示为url /#。我希望忽略它的链接,只显示下拉菜单。我的代码如下:
$(document).on('click', '#navpanel .mainnav a[href^="/#"]', function(e){
if($(this).parent('li').hasClass('expanded')) {
$(this).siblings('ul').css('display', 'block').slideDown('linear', function(){
$(this).parent('li').toggleClass('expanded');
});
} else {
$(this).siblings('ul').css('display', 'none').slideUp('linear', function(){
$(this).parent('li').toggleClass('expanded');
});
}
var objHeight = 0;
$.each($('ul.tier1').children(), function(){
objHeight += $(this).height();
});
$('ul.tier1').height(objHeight);
e.stopPropagation();
});
答案 0 :(得分:2)
如果我理解你,你不需要stopPropagation
但是防止违约。将此添加到您的链接点击事件。它将禁用默认操作,在您的情况下是重定向。
e.preventDefault();
stopPropagation
只是阻止您的事件在DOM树中冒泡