Я регистрирую прослушиватель кликов на элементе DOM через jQuery.on()
. Если позже этот элемент будет удален из DOM - возможно, косвенно, например. путем замены содержимого какого-либо родителя с помощью $(parent).html(...)
, должен ли я по-прежнему беспокоиться об удалении моего обработчика через jQuery.off()
?Должен ли я вызвать jQuery.off после удаления элемента DOM?
Даже если элемент больше не будет запускать какое-либо событие, я беспокоюсь о потенциальных утечках памяти. Поддерживает ли jQuery или браузер уход и отбрасывает все зарегистрированные обработчики после удаления элемента из DOM?
Но почему браузер хранит их в памяти? зачем нам их явно удалять? –
@SubinJacob Поскольку jQuery хранит данные 'data' и' event' в промежуточном объекте. Если элементы удалены из DOM, может случиться, что связанные данные будут сохранены во внутреннем кеше (например, вы связываете событие с '.on', а затем удаляете элемент с' removeChild' или 'innerHTML = ''' на родительском элементе. jQuery 'html ('')', 'empty()', 'remove()' и т. д. не забудьте удалить соответствующие элементы данных из кеша. – dfsq
Ох уж это. Тогда это связано только с jQuery, а не с браузером, правильно? Было бы неплохо, если бы мы связали событие с использованием чистой ванильной js. –