2010-04-20 7 views
5

Me gustaría ejecutar algún código justo después de que se adjunta un cierto conjunto de elementos. jQuery.live() le permite vincular manejadores de eventos a los elementos, incluso si se crean más tarde. Pero AFAIK no hay un método adecuado para hacer algo como lo siguiente:¿Cómo se ejecuta el código cuando se conectan elementos como jQuery's live() do with events?

$("some selector").live("attach", function() { $(this).whatever(); }); 

¿Cómo puedo lograr esto?

EDITAR: Para aclarar; Me gustaría ejecutar una animación en un elemento recién creado. Aparte del hecho de que la animación es inútil antes de agregarse primero, en algunos navegadores la propiedad backgroundColor no se hereda de la clase CSS hasta que se adjunta a DOM. Esto hace que mi código de animación se rompa.

Así que me gustaría crear este elemento, de alguna manera aplicar la animación para ejecutar una vez que está conectada y luego devolverla.

Respuesta

0

AFAIK no hay eventos en jQuery que se disparen cuando cambia el dom. Lo que se necesita para ejecutar código en el elemento recién adjunto, el cual se convierte en totalmente consultable en cuanto se pasa a jQuery por ejemplo

var $span = $('<span>my new document fragment</span>'); 
$span.css('what','ever'); 

$('div').append($span); 
+0

he añadido algunos detalles sobre mi problema Lo que describes es normalmente lo que estoy haciendo. Pero en este caso, 'backgroundColor' no está configurado (desde la clase) hasta que el elemento esté conectado a DOM. – muhuk

1

muy difícil de hacer en una forma compatible entre navegadores. Tuve que implementar algo similar y necesité usar los eventos de mutación como @Makram sugirió (DOMNodeInserted, DOMNodeRemoved) y un método de restauración setInterval (simplemente sondeo de cambios) - setInterval se detiene si uno de los eventos de mutación se dispara, ya que puede asumir que los eventos funcionan y no necesita el sondeo.

También hay que resaltar es que no parecía vivo() para trabajar siempre en el IE, así que estoy manualmente re-unión eventos en algunas circunstancias (después de desatar primero, por supuesto!)

Cuestiones relacionadas