我正在使用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();
});
最佳答案
如果我了解您的权利,则无需stopPropagation
,但可以防止出现默认情况。将此添加到您的链接单击事件。它将禁用默认操作,在您的情况下为重定向。
e.preventDefault();
stopPropagation
只是防止您的事件在DOM树中冒泡关于javascript - jQuery:具有stopPropagation的元素将转到其链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26490461/