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