2015-12-02 9 views
8

In quasi tutti gli script esempi/modelli posso trovare, vedo event.preventDefault(); al termine della funzione, in questo modo:event.preventDefault() sempre poco prima della fine delle funzioni

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

Dal mio punto di vista, l'idea è "arrestare immediatamente il comportamento di default quindi fare quello che dobbiamo fare", in questo modo:

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

allora, cosa mi manca?

+0

'interrompere immediatamente il default behavior' eventi sono messi in coda quindi questo non fa differenza per metterlo in cima o in fondo al gestore. Ma vedi la risposta di TrueBlueAussie, di solito è più comodo metterla in fondo se per qualche motivo vuoi fermare anche la propagazione, usando il metodo stenografico 'return false;'. Detto questo, lo metto sempre in cima solo per la leggibilità, ma questa è la mia opinione personale –

risposta

11

Non fa alcuna differenza nei due esempi specifici mostrati. Mettilo dove vuoi :)

Il solito motivo per averlo alla fine è quando sostituisce return false; come di solito era il ritorno. return false è una scorciatoia per entrambi e.preventDefault()ee.stopPropagation().

L'altra cosa da tenere a mente è quando è necessario fermarsi condizionale, nel qual caso la preventDefault() va nel mezzo (di un if ecc) :)

Problemi correlati