2010-04-20 6 views
5

Chciałbym uruchomić kod zaraz po dołączeniu pewnego zestawu elementów. jQuery.live() umożliwia powiązanie modułów obsługi zdarzeń z elementami, nawet jeśli zostały one utworzone później. Ale AFAIK nie ma odpowiedniej metody, aby zrobić coś takiego:Jak uruchomić kod po dołączeniu elementów, takich jak jQuery na żywo() z wydarzeniami?

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

Jak mogę to zrobić?

EDYCJA: W celu wyjaśnienia; Chciałbym uruchomić animację na nowo utworzonym elemencie. Poza faktem, że animacja jest bezużyteczna przed pierwszym dodaniem, w niektórych przeglądarkach właściwość nie jest dziedziczona z klasy CSS, dopóki nie zostanie dołączona do DOM. Powoduje to przerwanie mojego kodu animacji.

Chciałbym więc stworzyć ten element, jakoś zastosować animację do uruchomienia, gdy jest dołączony, a następnie zwrócić.

Odpowiedz

0

AFAIK Brak zdarzeń w jQuery, które są uruchamiane, gdy dom zmienia się. trzeba by uruchomić kod na nowo dołączonym elementem, który staje się w pełni queryable tak szybko, jak to jest przekazywane do jQuery np

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

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

Dodałem kilka szczegółów o moim problemie. To, co opisujesz, jest zwykle tym, co robię. Ale w tym przypadku 'backgroundColor' nie jest ustawiony (od klasy), dopóki element nie zostanie dołączony do DOM. – muhuk

1

bardzo trudne do zrobienia w kompatybilnym sposób przeglądarki. Musiałem zaimplementować coś podobnego i musiałem użyć zdarzeń mutacji, jak zasugerował @Makram (DOMNodeInserted, DOMNodeRemoved), i metody zastępczej setInterval (po prostu odpytywanie o zmiany) - setInterval jest zatrzymany, jeśli wystąpi jedna z mutacji zostaje zwolniony, ponieważ wtedy możesz założyć, że zdarzenia działają i nie potrzebujesz odpytywania.

Warto też wspomnieć, że na żywo() nie wydaje się zawsze działa w IE, więc jestem ponownie ręcznie wiązania zdarzeń w pewnych okolicznościach (po niewiążące najpierw oczywiście!)

Powiązane problemy