2010-04-20 39 views
5

Tôi muốn chạy một số mã ngay sau khi một tập hợp các phần tử nhất định được đính kèm. jQuery.live() cho phép bạn liên kết trình xử lý sự kiện với các phần tử, ngay cả khi chúng được tạo sau này. Nhưng AFAIK không có phương pháp phù hợp để thực hiện điều gì đó như sau:Làm thế nào để chạy mã khi các phần tử được đính kèm như jQuery() làm với các sự kiện?

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

Làm cách nào để thực hiện điều này?

EDIT: Để làm rõ; Tôi muốn chạy một hình động trên một phần tử mới được tạo ra. Ngoài thực tế hoạt ảnh là vô dụng trước khi thêm vào đầu tiên, trong một số trình duyệt, thuộc tính backgroundColor không được thừa kế từ lớp CSS cho đến khi nó được đính kèm với DOM. Điều này làm cho mã hoạt ảnh của tôi bị hỏng.

Vì vậy, tôi muốn tạo phần tử này, bằng cách nào đó, hãy áp dụng hoạt ảnh để chạy sau khi được đính kèm và sau đó trả lại.

Trả lời

0

AFAIK không có sự kiện nào trong jQuery được kích hoạt khi thay đổi. Bạn sẽ cần phải chạy mã trên các yếu tố mới kèm theo đó trở nên hoàn toàn queryable ngay sau khi nó được chuyển cho jquery ví dụ

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

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

Tôi đã thêm một số chi tiết về vấn đề của tôi. Những gì bạn mô tả thường là những gì tôi đang làm. Nhưng trong trường hợp này, 'backgroundColor' không được thiết lập (từ lớp) cho đến khi phần tử được gắn vào DOM. – muhuk

1

Rất khó thực hiện theo cách tương thích giữa các trình duyệt. Tôi đã phải thực hiện một điều tương tự và cần sử dụng các sự kiện đột biến như @Makram đã đề xuất (DOMNodeInserted, DOMNodeRemoved) và phương thức dự phòng setInterval (chỉ cần bỏ phiếu cho các thay đổi) - setInterval bị dừng nếu một trong các sự kiện đột biến bị sa thải, khi đó bạn có thể giả định các sự kiện hoạt động và bạn không cần bỏ phiếu. Cũng cần lưu ý rằng live() dường như không hoạt động trong IE, vì vậy tôi sẽ ràng buộc lại các sự kiện trong một số trường hợp (sau khi hủy liên kết trước hết!)

Các vấn đề liên quan