2012-03-12 26 views
16

Tôi cần tạo trình xử lý sự kiện sao cho khi phần tử mới được thêm vào tài liệu hoặc bất kỳ phần tử con nào của nó, trình xử lý sự kiện của tôi sẽ được gọi.Lắng nghe các sự kiện như thêm các phần tử mới trong JavaScript

Bất kỳ ý tưởng nào về cách thực hiện việc này bằng cách sử dụng?

+1

thể trùng lặp của [Phát hiện những thay đổi trong DOM] (http://stackoverflow.com/questions/3219758/detect-changes-in-the-dom) –

+0

@zeacuss: đi đây http: // www .w3.org/TR/DOM-Level-2-Sự kiện/sự kiện.html # Sự kiện-EventListener – krish

Trả lời

23
.bind('DOMNodeInserted DOMNodeRemoved') 

đây là sự kiện để kiểm tra phần tử được chèn hoặc xóa.

liên kết trên yếu tố cha mẹ sự kiện này.

và gọi chức năng của bạn trong handler

js fiddle bản demo: http://jsfiddle.net/PgAJT/

bấm vào đây ví dụ ... http://help.dottoro.com/ljmcxjla.php

+1

bản trình diễn hoàn hảo – zeacuss

+0

Điều này đang hoạt động tốt, ngoại trừ trong IE ... –

+6

hiện không được chấp nhận .. xem https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events – yomexzo

4

DOMNodeInserted bị phản đối trong DOM Level 3 giới thiệu. sử dụng chúng làm chậm trình duyệt (họ nói). tùy thuộc vào những gì bạn cần, bạn có thể kích hoạt sự kiện tùy chỉnh bên trong mã nơi bạn chèn phần tử.

+4

thực sự, tôi không phải là người thêm các nút, vì vậy tôi không thể xử lý nó khi nó được thêm vào. – zeacuss

18

Sự kiện đột biến không được dùng nữa, thay vào đó hãy sử dụng Mutation Observer. Bạn cũng có thể sử dụng thư viện arrive.js, nó sử dụng Trình theo dõi đột biến nội bộ và cung cấp một api đơn giản để nghe các yếu tố tạo và xóa.

$('#container').arrive('.mySelector', function(){ 
    var $newElem = $(this); 
}); 
+2

Thư viện rất hay! Giải quyết vấn đề hiện tại của tôi và chắc chắn sẽ sử dụng nó trên các dự án trong tương lai. Cảm ơn, Uzair! – mkp

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