2015-12-02 69 views
8

末在幾乎所有的實例/模板腳本我能找到之前,我看到event.preventDefault();在函數的結尾,就像這樣: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'); 
}); 

所以我缺少什麼?

+0

'立即停止默認behavior'活動放在在隊列中,所以這並沒有區別把它放在處理程序的頂部或底部。但請參閱TrueBlueAussie的回答,如果由於某種原因想要停止傳播,使用簡寫方式'return false;',通常將它置於底部更方便。這就是說,爲了可讀性,我總是把它放在頂端,但這是我自己的看法 –

回答

11

在所示的兩個具體示例中沒有區別。把它放在你喜歡的地方:)

讓它在最後的通常原因是它代替return false;,因爲那通常是返回的地方。 return falsee.preventDefault()e.stopPropagation()的快捷方式。

的另一件事要記住是當你需要有條件地停止它,在這種情況下,preventDefault()進入中間(的if等):)