delegate - jquery on input
jQuery.on() con múltiples selectores en la delegación de eventos? (2)
He utilizado .on()
en jQuery 1.7 y me pregunto si es posible adjuntar varios selectores a la vez para los elementos que se han inyectado en una página. Anteriormente, estaba usando live()
, pero es obvio por qué quiero cambiar dadas las mejoras de rendimiento.
¿Puedes usar .on()
de la manera como:
$(document).on(''click'', ''#selector1, #selector2, .class1'', function () {
//stuff
});
¿Y hay beneficios perdidos al adjuntar un documento?
?
¿Puedes usar .on () de la manera como:
$(document).on(''click'', ''#selector1, #selector2, .class1'', function () { //stuff });
Quiero usar esto en lugar de
live()
dadas las mejoras de rendimiento.No hay ventajas de rendimiento de usar ese fragmento de código en lugar de usar
live()
, ya quelive()
enlaza los eventos con el documento, y en jQuery 1.7, las llamadason
vivo detrás de la escena.¿Y hay beneficios perdidos al adjuntar un documento?
La desventaja de vincular a
document
es que el evento debe atravesar la lista completa de ancestros antes de ser manejado; Esto, como se señala en la documentación de jQuery , es la ruta más lenta posible. Será mejor manejar el evento antes, conectando el controlador a un elemento más cercano a la fuente del evento.
es posible y "esto" es el selector pulsado, no el documento.
es mejor que te adjuntes al elemento padre más cercano de tu selector. Al hacer clic en ''# selector1'', la burbuja de eventos hasta el elemento del controlador de eventos, aquí: documento.
Cuantas más capas, más acciones. Además, si entre el selector1 y el documento hay otro controlador de eventos de clic, se puede interceptar con event.stopPropagation();
, y nunca llegue al controlador de eventos "documento".
Puede verificar el "evento de intercepción" malicioso en este violín .