2010-05-19 12 views
5

Me gustaría tener el mismo comportamiento 'en vivo', pero sin usar eventos. es posible? Necesito esto porque estoy usando un archivo JavaScript diferente que crea algunos elementos para los cuales necesito agregar clases de CSS.JQuery 'en vivo' para el selector?

El siguiente código debe ejecutarse una vez que dicho elemento se agrega al dom: $ (". MyClass"). AddClass ("myNewClass");

¿Esto es posible?

Respuesta

2

El liveQuery plugin es capaz de esto.

http://brandonaaron.net/code/livequery/docs

A partir de los documentos:vivo de consulta también tiene la capacidad de disparar una función (devolución de llamada) cuando coincide con un nuevo elemento y otra función (devolución de llamada) para cuando un elemento ya no se corresponde.


EDIT:

Esta sería una solución de código usando livequery.

$('.myClass').livequery(function() { $(this).addClass('myNewClass') }); 
+0

¡Funciona a la perfección! Gracias – SaphuA

+0

La otra opción es hacer una nueva vinculación cuando el formulario cambia, por ejemplo, en el éxito de ajax. Livequery puede ralentizar un poco las cosas. –

+0

@James Westgate - ¿Qué forma quieres decir? El OP quería agregar una clase para elementos añadidos al DOM por otro archivo js que no puede ser editado. No hay evento para enlazar (o volver a vincular) a. – user113716

0

Tal vez yo no entiendo lo que están pidiendo, pero si usted está usando jQuery, ¿por qué no se puede utilizar un evento de actualización impulsado?

La solución de LiveQuery que Patrick sugiere (que funcionará bien) usa eventos en segundo plano, como 'en vivo'.

+0

Porque estoy en una situación extraña;) No puedo modificar el código de JavaScript que estoy usando y no puedo activar los eventos. Sé los nombres de clase que usa para los elementos creados, así que pensé que esta sería la mejor solución para mí. – SaphuA