Tôi cần có thể xóa các sự kiện được gắn với một phần tử và tất cả các sự kiện ngay cả khi tôi không biết những sự kiện này là gì. Tất cả các sự kiện được đính kèm bằng cách sử dụng jquery.Có thể xóa tất cả các sự kiện được gắn vào một phần tử và các con của nó
Trả lời
Đối với jQuery 1.8 và sau đó, sử dụng
$(element).find("*").addBack().off();
addBack()
thêm vào danh sách ban đầu của các yếu tố từ $(element)
trở lại bộ sưu tập nội bộ của các yếu tố tổ chức bởi các đối tượng jQuery (những người được trả về bởi find("*")
). off()
xóa tất cả các trình xử lý sự kiện được đính kèm, bao gồm cả các trình xử lý sự kiện.
Nếu bạn chỉ muốn trẻ em và không phải tất cả con cháu, sử dụng
$(element).children().addBack().off();
Xem tài liệu:
Đối với jQuery 1.7 trở xuống, hãy sử dụng andSelf()
thay vì addBack()
. Đối với jQuery 1.6 trở xuống, hãy sử dụng unbind()
và die()
thay vì off()
. Ví dụ:
$(element).children().andSelf().unbind().die();
Sử dụng phương thức .unbind() trên phần tử.
vàSelf() không được dùng nữa.
Sử dụng add() chức năng:
$(element).add("*").off();
Tôi nghĩ bạn chỉ có thể thay thế 'addSelf()' cho 'addBack()' – Marc
vàSelf() không được chấp nhận, $ (element) .children(). AddBack() tương đương với $ (element) .add ("*") –
Chúng không tương đương. Câu trả lời thứ hai (câu trả lời của bạn) chọn mọi phần tử trong DOM. Để sửa lỗi này, bạn cần phải cung cấp ngữ cảnh cho bộ chọn "*", tức là '$ (phần tử) .add (" * ", phần tử) .off();' – Jools
Đây không phải là một câu trả lời, nhưng nó là đáng nói.
Tôi đã sử dụng plugin của bên thứ ba mà không có phương thức hủy. Tôi tìm thấy giải pháp này nhưng nó không hoạt động ngay từ đầu cho đến khi tôi bắt đầu đào sâu hơn vào tài liệu.
Lưu ý rằng nếu plugin đang tạo một đối tượng nghe $(document).on(event, handler)
trên đối tượng của bạn, bạn phải xóa hành động bằng cách viết $(document).off(event, 'element, element *')
. Chỉ cần viết $(element).find("*").addBack().off();
sẽ không hoạt động nếu người nghe chính là document
.
- 1. Xóa tất cả trình nghe sự kiện JavaScript của một phần tử và các phần tử con của nó?
- 2. Nhân bản với tất cả các sự kiện của nó
- 3. Jquery Xóa tất cả các trình xử lý sự kiện bên trong phần tử
- 4. Xem tất cả sự kiện dom cho một phần tử
- 5. Sự kiện bàn phím cho các phần tử con trong div có thể chỉnh sửa được?
- 6. Javascript có xóa trình xử lý sự kiện của các phần tử DOM đã xóa không?
- 7. Làm thế nào để có được tất cả các phần tử con của cây phần tử với Python ElementTree?
- 8. Có thể xem các sự kiện trên tất cả các nút con cháu trong ZooKeeper không?
- 9. Gắn các hàm vào một cá thể của một phần tử
- 10. Xác định tất cả các phần tử con chiều rộng
- 11. XPath để nhận tất cả các phần tử con ngoại trừ một phần tử có tên cụ thể?
- 12. Di chuột vào phần tử và đánh dấu tất cả các phần tử có cùng một lớp
- 13. Tôi có cần tách các sự kiện trong jQuery khi tôi xóa các phần tử
- 14. Một từ điển có thể lưu các phần tử của nó được truy cập ít thường xuyên hơn vào đĩa
- 15. Làm thế nào để có được tất cả các lớp CSS của một phần tử?
- 16. ScrollViewer và xử lý các sự kiện thao tác trên các phần tử con
- 17. Gắn một sự kiện GWT vào một phần tử trong khung nội tuyến ngoài
- 18. Lấy một mảng của tất cả các sự kiện DOM có thể
- 19. Chọn tất cả các phần tử con của một nút trong scala
- 20. Có cách nào để xóa các ràng buộc khỏi tất cả các phần tử bị ràng buộc trên một sự kiện đóng biểu mẫu không?
- 21. Làm thế nào để chèn một phần tử mới vào giữa tất cả các phần tử của một mảng Ruby?
- 22. liệt kê hashset và xóa các phần tử từ nó
- 23. Hủy bỏ một CLASS cho tất cả các phần tử con
- 24. GWT: Thêm trình xử lý sự kiện trên tất cả các phần tử div
- 25. Chọn tất cả các phần tử trên một trang
- 26. Xóa tất cả các nút con khỏi cha/mẹ?
- 27. Nghe tất cả các sự kiện onClick của tất cả trẻ em trong jQuery
- 28. Sử dụng tìm để xóa tất cả các thư mục con (và các tệp của họ)
- 29. Làm cách nào để có được tất cả các phần tử của một thẻ HTML cụ thể trong javascript?
- 30. jQuery lấy yếu tố tiếp theo và tất cả các con của nó
cảm ơn, sự kiện này sẽ không được ủy quyền() hay tôi cần phải hủy liên kết chúng với undelegate() – SystemicPlural
@SystemicPlural: không, nó sẽ không hủy liên kết các sự kiện đó. Bạn có thể sử dụng 'undelegate()' hoặc 'die()' chỉ bằng cách chuỗi nó ở phần cuối ở trên. –