Por qué no devolver false en un controlador de evento en jQuery
Durante mucho tiempo he abusado de devolver false
en los controladores de eventos de jQuery.
Por ejemplo:
$( 'a.un-link' ).on( 'click',
function ( oEvent ) {
// Hacer algo aquí!
return false;
}
);
Ese return false;
es equivalente a hacer:
oEvent.preventDefault();
oEvent.stopPropagation();
Mi impresión es que está haciendo demasiado, ya que es posible que queramos que el evento se propague a alguno de los contenedores superiores.
En la mayoría de casos lo único que estamos intentando es prevenir que al hacer click, se redireccione a la dirección en el href del enlace, y para eso con oEvent.preventDefault()
sería suficiente. Es por eso que estoy siguiendo las siguientes pautas en mi código más reciente:
oEvent.preventDefault()
al inicio del método.- No devolver nada.
$( 'a.some-link' ).on( 'click',
function ( oEvent ) {
oEvent.preventDefault();
// Hacer algo aquí!
}
);
Esto impedirá la redirección y permitirá a los controladores superiores tratar el evento.