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

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

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

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

Ответы [ 3 ]

16 голосов
/ 26 сентября 2011

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

13 голосов
/ 26 сентября 2011

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

1 голос
/ 12 августа 2016

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

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

Поэтому, если вы хотите сохранить слушателей, используйте .detach().

...