【问题标题】:event.preventDefault() always just before the end of the functionsevent.preventDefault() 总是在函数结束之前
【发布时间】:2015-12-02 15:30:19
【问题描述】:

在我能找到的几乎所有示例/模板脚本中,我在函数末尾看到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();
});

在我看来,这个想法是“立即停止默认行为,然后做我们必须做的任何事情”,如下所示:

$('.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');
});

那么我错过了什么?

【问题讨论】:

  • stop immediately the default behavior 事件被放入队列中,因此将它放在处理程序的顶部或底部没有区别。但是请参阅 TrueBlueAussie 的答案,如果由于某种原因您也想停止传播,通常将其放在底部更方便,使用速记方式return false;。就是说,我总是把它放在首位只是为了便于阅读,但这是我自己的看法
  • @A.Wolff 所以要明确一点,在这种情况下,我们不会冒event.preventDefault() 运行“为时已晚”的风险吗?你能详细说明Events are put in queue的意思吗?

标签: jquery preventdefault


【解决方案1】:

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

最后使用它的通常原因是它替换了return false;,因为这通常是必须返回的地方。 return falsee.preventDefault() e.stopPropagation() 的快捷方式。

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

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2012-05-28
    • 2019-05-01
    • 2017-10-25
    • 2018-11-30
    • 2013-05-05
    • 2018-08-16
    • 1970-01-01
    • 2019-05-16
    相关资源
    最近更新 更多