on()
es un intento de fusionar la mayoría de las funciones de enlace de eventos de jQuery en una sola. Esto tiene la ventaja añadida de poner en orden las ineficiencias con live
vs delegate
. En futuras versiones de jQuery, estos métodos serán eliminados y solamente on
y one
serán dejados.
Ejemplos:
// Using live()
$(".mySelector").live("click", fn);
// Equivalent `on` (there isn't an exact equivalent, but with good reason)
$(document).on("click", ".mySelector", fn);
// Using bind()
$(".mySelector").bind("click", fn);
// Equivalent `on`
$(".mySelector").on("click", fn);
// Using delegate()
$(document.body).delegate(".mySelector", "click", fn);
// Equivalent `on`
$(document.body).on("click", ".mySelector", fn);
Internamente, jQuery asigna todos estos métodos y configuradores de controladores de eventos abreviados al on()
método, lo que indica que debe ignorar estos métodos de ahora en adelante y simplemente usar on
:
bind: function( types, data, fn ) {
return this.on( types, null, data, fn );
},
live: function( types, data, fn ) {
jQuery( this.context ).on( types, this.selector, data, fn );
return this;
},
delegate: function( selector, types, data, fn ) {
return this.on( types, selector, data, fn );
},
Ver https://github.com/jquery/jquery/blob/1.7/src/event.js#L965 .