Удаляются ли слушатели событий в jQuery автоматически, когда вы удаляете элемент с помощью.html()?

В jQuery, если мы используем .remove() для удаления некоторого элемента удаляются все связанные события и данные jQuery, связанные с элементами.

Но что произойдет, если мы "удалим" элементы с .html()?

Нужно ли отменять привязку всех элементов перед изменением любого HTML, чтобы избежать утечек памяти?

3 ответа

Решение

Да, они будут удалены. jQuery очистит события и т.д., связанные с удаленными элементами. Он НЕ будет копировать события, если вы сделаете что-то вроде $(elm1).html($elm2.html())

Да, они будут удалены, даже когда вы используете html(), Исходный код jQuery подтверждает это.

Просто чтобы немного расширить:

  • .remove(), .html(), .empty() и т.д - все удаляют слушателей
  • .detach() не удаляет слушателей
  • .clone() имеет параметры, позволяющие вам решить, копируются ли данные / слушатели

Так что если вы хотите сохранить слушателей, используйте .detach(),

Другие вопросы по тегам