Quando desidero impedire l'esecuzione di altri gestori di eventi dopo l'attivazione di un determinato evento, posso utilizzare una delle due tecniche. Userò jQuery negli esempi, ma questo vale anche per plain-JS:
1. event.preventDefault()
$('a').click(function (e) {
// custom handling here
e.preventDefault();
});
2. return false
$('a').click(function () {
// custom handling here
return false;
});
C'è qualche differenza significativa tra questi due metodi per fermare la propagazione degli eventi?
Per me, return false;
è più semplice, più breve e probabilmente meno soggetto a errori rispetto all'esecuzione di un metodo. Con il metodo, devi ricordare del corretto involucro, parentesi, ecc.
Inoltre, devo definire il primo parametro nel callback per poter chiamare il metodo. Forse, ci sono alcuni motivi per cui dovrei evitare di farlo in questo modo e utilizzare preventDefault
invece? Qual è il modo migliore?
preventDefault
fa non impedire ad altri mancini da eseguire. Questo è ciò chestopImmediatePropagation
serve.