event.preventDefault() 总是在函数结束之前

event.preventDefault() always just before the end of the functions

在我能找到的几乎所有示例/模板脚本中,我都在函数末尾看到 event.preventDefault();,如下所示:

$('.navbar-nav li a').bind('click', function(event) {
    var $anchor = $(this);
    $('html, body').stop().animate({
        scrollTop: $($anchor.attr('href')).offset().top
    }, 1500, 'easeInOutExpo');
    event.preventDefault();
});

在我看来,想法是"stop immediately the default behavior then do whatever we have to do",像这样:

$('.navbar-nav li a').bind('click', function(event) {
    event.preventDefault();

    var $anchor = $(this);
    $('html, body').stop().animate({
        scrollTop: $($anchor.attr('href')).offset().top
    }, 1500, 'easeInOutExpo');
});

那我错过了什么?

显示的两个具体示例没有区别。放在你喜欢的地方:)

将它放在末尾的通常原因是它取代了 return false;,因为那通常是 return 必须出现的位置。 return falsee.preventDefault() e.stopPropagation().

的快捷方式

另一件要记住的事情是当你需要有条件地停止它时,在这种情况下 preventDefault() 位于中间(if 等):)