2015-12-02 11 views
8

In fast allen Beispielen/templates Skripte ich finden kann, ich sehe event.preventDefault(); am Ende der Funktion, wie folgt aus:Event.preventDefault() immer kurz vor dem Ende der Funktionen

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

Aus meiner Sicht ist die Idee „dann sofort die Standard-Stop Verhalten tun, was wir zu tun haben“, wie folgt aus:

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

was bin ich dabei?

+0

'stoppen sofort den Standard behavior' Ereignisse gesetzt werden in der Warteschlange, so dass dies keinen Unterschied macht, um es oben oder unten von Handler zu setzen. Aber sehen Sie TrueBlueAussie die Antwort, es ist in der Regel bequemer, es auf den Grund zu setzen, wenn Sie aus irgendeinem Grund auch die Propagierung stoppen wollen, indem Sie den Kurzschreibweise 'return false;' verwenden. Das heißt, ich habe es immer nur zur besseren Lesbarkeit an die Spitze gesetzt, aber das ist meine eigene Meinung –

Antwort

11

Es macht keinen Unterschied in den zwei spezifischen Beispielen gezeigt. Setzen Sie es, wo Sie möchten :)

Der übliche Grund dafür, es am Ende ist, wenn es return false; ersetzt, wie das war in der Regel, wo die Rückkehr sein musste. return false ist eine Abkürzung für e.preventDefault()unde.stopPropagation().

Die andere Sache zu beachten ist, wenn Sie bedingt aufhören müssen, in welchem ​​Fall die preventDefault() in der Mitte geht (einen if etc) :)

Verwandte Themen