2012-08-26 18 views
6

Acabo de notar que live() ya está en desuso en jQuery. Tengo una pregunta rápida (solo para asegurarme de cuál es el método más eficiente, el más rápido y el más actualizado). Tengo myfunction() y quiero bind() en todos los elementos actuales y futuros con attr("title") == 'x'.¿Cómo agregar el evento jQuery a todos los elementos actuales y futuros?

¿Es esto lo que debe utilizar:

jQuery("???").bind("mouseup", myfunction); 
jQuery("???").bind("keyup", myfunction); 

O esto:

jQuery("???").delegate("???", "mouseup", myfunction); 
jQuery("???").delegate("???", "keyup", myfunction); 

O esto:

jQuery("???").on("mouseup", "???", myfunction); 
jQuery("???").on("keyup", "???", myfunction); 

También estoy teniendo especificando selector de corregir el problema (s) - porque algunos de ellos permiten adjuntar evento a una cosa (como cuerpo o documento) y permiten un segundo selector.

Respuesta

9

Uso .on() lugar, con un attribute equals selector:

$(document).on('mouseup', '[title="x"]', myfunction); 
+0

¡Gracias! Eso es lo que estoy buscando :) Creo que la pregunta ya está respondida. – Atadj

+0

@Paul: Además, si tiene un elemento primario común para los elementos que coincidan con el selector '[title =" x "]', reemplace '$ (document)' con '$ (" # id_of_common_parent ")' como será más eficiente. –

+0

¡Gracias! Una última cosa: ¿qué sucede si quiero usar "contentEditable" en lugar de "Title" y "contentEditable" puede ser: (1) 'contentEditable =" contentEditable "', (2) 'contentEditable =" true "' o simplemente 'contentEditable '. Esos son 3 atributos que marcan como 'verdadero' - en el caso de 'title =" x "' solo hay 1 posibilidad. Ese es el segundo caso para el que lo necesito. – Atadj

6

La sintaxis que reemplaza .live() es así:

$('#parent').on('keyup mouseup', '.children', myfunction); 
+0

bueno saber que puedo mezclar dos eventos juntos utilizando esto. ¡Gracias! También me pregunto cuál sería mi selector, y ¿por qué escribieron que 'live()' no es eficiente? ¿Es lo mismo con 'on()'? – Atadj

+0

Hay una lista de problemas con '.live()' en la página de la API para ese método: http://api.jquery.com/live/ – Blender

Cuestiones relacionadas