Utilizo la función on() JQuery y preventDefault() para evitar la acción predeterminada del ancla. No puedo entender la función off() JQuery. ¿Puedo usar off('click') en lugar de:
$('.anchor').on('click', function(e) { e.preventDefault(); });Quiero decir, ¿puedo usar esto para evitar la acción predeterminada del ancla?
$('.anchor').off('click');No, según la documentación de .off() :
El método
.off()elimina los controladores de eventos que se adjuntaron con.on().
Entonces off() solo elimina los controladores que jQuery agregó. Pero los controladores predeterminados, por ejemplo, en un enlace o en un botón de envío, deben evitarse mediante preventDefault() .
off : deshabilite el eventHandler para que no se pueda ejecutar ninguna función al hacer clic en preventdefault : deshabilite el eventHandler predeterminado pero puede usar su propia función.
Son lógicamente muy diferentes.
preventDefault() evita que el navegador actúe sobre el comportamiento del evento, pero aún ejecuta el código JS. Por ejemplo, a continuación, la URL a la que apunta el elemento .anchor no se transferirá, sin embargo, el código JS aún se ejecutará:
$('.anchor').on('click',function(e){ e.preventDefault(); console.log('the browser wont redirect, but you will see this line in the console') }); Por otro lado, off() elimina por completo cualquier controlador de eventos del tipo dado del elemento. En este caso, el navegador se transferirá a la URL dada al hacer clic y no se ejecutará ningún código JS.
$('.anchor').off('click');