2011-09-25 20 views
14

Trong jQuery nếu chúng ta sử dụng .remove() để loại bỏ một số phần tử, thì tất cả các sự kiện ràng buộc và dữ liệu jQuery được liên kết với các phần tử được loại bỏ.Trình lắng nghe sự kiện trong jQuery có bị xóa tự động khi bạn xóa phần tử bằng cách sử dụng .html() không?

Nhưng điều gì sẽ xảy ra nếu chúng tôi "xóa" các phần tử có .html()?

Chúng tôi có cần phải hủy liên kết tất cả các yếu tố trước khi thay đổi bất kỳ html nào để tránh rò rỉ bộ nhớ không?

Trả lời

15

Có, chúng sẽ bị xóa. jQuery sẽ dọn dẹp các sự kiện, vv liên quan đến các phần tử đã loại bỏ. Nó sẽ không sao chép các sự kiện nếu bạn làm điều gì đó giống như $ (elm1) .html ($ elm2.html())

12

Vâng, chúng sẽ bị xóa ngay cả khi bạn sử dụng html(). JQuery source code xác nhận nó.

+1

Cảm ơn Anurag, tôi biết bạn là người đầu tiên và bạn đang xác nhận câu trả lời của bạn (+1 cho điều đó), nhưng kinghfb cần nhiều điểm hơn, vì vậy tôi sẽ đánh dấu câu trả lời của anh ấy là được chấp nhận để thúc đẩy anh ấy, tôi hy vọng bạn hiểu. Cảm ơn ! – Enrique

+1

không có vấn đề @Enrique :) – Anurag

+0

Ở bất kỳ tỷ lệ nào, sẽ có một huy hiệu SO để xác thực câu trả lời của bạn với liên kết tới mã nguồn :) –

0

Chỉ cần để mở rộng một chút:

Vì vậy, nếu bạn muốn giữ chân người nghe, hãy sử dụng .detach().

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