Удаляются ли слушатели событий в jQuery автоматически, когда вы удаляете элемент с помощью.html()?
В jQuery, если мы используем .remove()
для удаления некоторого элемента удаляются все связанные события и данные jQuery, связанные с элементами.
Но что произойдет, если мы "удалим" элементы с .html()
?
Нужно ли отменять привязку всех элементов перед изменением любого HTML, чтобы избежать утечек памяти?
3 ответа
Решение
Да, они будут удалены. jQuery очистит события и т.д., связанные с удаленными элементами. Он НЕ будет копировать события, если вы сделаете что-то вроде $(elm1).html($elm2.html())
Да, они будут удалены, даже когда вы используете html()
, Исходный код jQuery подтверждает это.
Просто чтобы немного расширить:
.remove()
,.html()
,.empty()
и т.д - все удаляют слушателей.detach()
не удаляет слушателей.clone()
имеет параметры, позволяющие вам решить, копируются ли данные / слушатели
Так что если вы хотите сохранить слушателей, используйте .detach()
,