Có cách nào - sử dụng jQuery hay không - để giám sát DOM để chèn, xóa, cập nhật các kiểu, v.v ...?Làm cách nào để giám sát DOM cho các thay đổi?
Trả lời
Xem các phần tử "MutationEvent" tại đây: https://developer.mozilla.org/en/DOM/DOM_event_reference nhưng các yếu tố này không còn được dùng nữa.
jQuery nay có thêm một cách để đính kèm các sự kiện để các thành phần hiện có và tương lai tương ứng với một selector: http://docs.jquery.com/Events/live#typefn
Nó có thể là một thủ thuật bạn có thể sử dụng vì thiếu đúng đắn DOM Node thông tin sửa đổi.
Xem thư viện mutation-summary. Nó được xây dựng trên đầu trang của một API trình duyệt mới được gọi là DOM Mutation Observers.
Hoặc nếu bạn không cần thư viện, API MutationObserver DOM hiện có sẵn trong Chrome 18+, Firefox 14+, Safari 6+, IE11 +. Có một ví dụ điển hình [ở đây] (https://hacks.mozilla.org/2012/05/dom-mutationobserver-reacting-to-dom-changes-without-killing-browser-performance/) – foz
Quan sát đột biến polyfill cho cũ hơn trình duyệt: https://github.com/webcomponents/webcomponentsjs/tree/master/src/MutationObserver – Pylinux
này chỉ dành cho mục đích gỡ lỗi:
Firebug hiện cho phép thiết lập breakpoint trên các nút html.
Bạn phải mở thanh tra html, nhấp chuột phải vào một nút và bạn có các tùy chọn sau:
- Interrupt về biến đổi thuộc tính
- Interrupt trên con thêm/gỡ bỏ
- Interrupt trên loại bỏ
Khi bạn đạt đến điểm ngắt, bạn cũng có thể duyệt qua ngăn xếp cuộc gọi.
Google Chrome cũng có tính năng tương tự.
Gần đây tôi đã viết một plugin mà không chính xác điều đó - jquery.initialize
Bạn sử dụng nó theo cùng một cách như .each
chức năng
$(".some-element").initialize(function(){
$(this).css("color", "blue");
});
Sự khác biệt từ .each
là - phải mất chọn của bạn, trong trường hợp này .some-element
và đợi các phần tử mới có bộ chọn này trong tương lai, nếu phần tử như vậy sẽ được thêm vào, nó cũng sẽ được khởi tạo.
Trong trường hợp khởi tạo hàm của chúng tôi, chỉ cần thay đổi màu thành phần thành màu xanh lam. Vì vậy, nếu chúng tôi sẽ thêm phần tử mới (bất kể có thanh tra ajax hoặc thậm chí F12 hay bất kỳ thứ gì) như:
$("<div/>").addClass('some-element').appendTo("body"); //new element will have blue color!
Plugin sẽ khởi động ngay lập tức. Ngoài ra, plugin đảm bảo một phần tử được khởi tạo chỉ một lần. Vì vậy, nếu bạn thêm yếu tố, sau đó .deatch()
nó từ cơ thể và sau đó thêm nó một lần nữa, nó sẽ không được khởi tạo lại.
$("<div/>").addClass('some-element').appendTo("body").detach()
.appendTo(".some-container");
//initialized only once
Plugin được dựa trên MutationObserver
- nó sẽ làm việc trên IE9 và 10 với sự phụ thuộc như chi tiết trên readme page.
- 1. tệp giám sát cơ sở giám sát python cho các thay đổi
- 2. Giám sát danh bạ cho các thay đổi
- 3. Làm thế nào để giám sát hiệu quả một thư mục để thay đổi trên linux?
- 4. Làm thế nào để giám sát kho lưu trữ git để thay đổi?
- 5. Giám sát ZooKeeper với Giám sát
- 6. giám sát thay đổi tập tin c + + linux
- 7. Giám sát
- 8. Giám sát sửa đổi thư mục
- 9. kịch bản lệnh linux giám sát các thay đổi tệp trong các thư mục (như autospec!)
- 10. Giám sát celerybeat với người giám sát và virtualenv
- 11. giám sát với chọn
- 12. Giám sát hiệu suất cho ASP.NET MVC2?
- 13. jQuery: Cách nghe các thay đổi DOM?
- 14. Giám sát ứng dụng virtualenv django qua người giám sát
- 15. Giám sát USB OSX
- 16. Giám sát các ứng dụng .NET ASP.NET
- 17. Cách giám sát khi vị trí màn hình của Kiểm soát thay đổi?
- 18. Tại sao Giám sát viên không nhận ra các thay đổi mã?
- 19. giám sát thư mục
- 20. Giám sát IIS 6.0
- 21. Làm thế nào để giám sát các nhà phát triển dữ liệu công việc trong Eclipse?
- 22. Giám sát lưu lượng mạng
- 23. Giám sát nhiệt độ CPU
- 24. Cách tốt nhất để giám sát vùng chứa trong bộ nhớ Azure blob để thay đổi là gì?
- 25. Làm thế nào để giám sát micrô cho âm thanh tiếng ồn?
- 26. Làm cách nào để chương trình giám sát xuất hiện dưới dạng hình nền?
- 27. Nhận vị trí của UIView đối với người giám sát của người giám sát
- 28. FireBug và giám sát các yêu cầu miền chéo JSONP
- 29. Làm thế nào để bạn giám sát các dịch vụ web của mình?
- 30. Instrumentation.ActivityMonitor không giám sát Intent.ACTION_CALL
Liên kết DOMtree đã bị xóa ... – eruciform
cảm ơn, đã được sửa bằng liên kết tới MDN;) –
sự kiện đột biến không được chấp nhận – Raynos