Ответ 1
Глядя на исходный код jQuery (2.1.1), вы задаете два разных вопроса.
-
Удаляет ли jQuery
replaceWith()
обработчики событий?Да. jQuery вызывает
cleanData()
, который является внутренним методом, который удаляет все данные элемента. Поскольку обработчики событий jQuery хранятся в данных элементов, они также будут очищены.cleanData()
также удаляет обработчик событий, прикрепленный к элементу, который запускает выполнение всех обработчиков событий, хранящихся в данных элементов, вызываяjQuery.removeEvent()
(другой внутренний метод). -
Вызывает ли
replaceWith()
вызовremove()
илиdetach()
под капотом?Единственный раз, когда он вызывает
remove()
, - если аргументыreplaceWith()
не были предоставлены; jQuery рассматривает его так, как если бы вы вызывалиremove()
вместоreplaceWith()
;
TL; DR: jQuery очистит все для вас, поэтому не должно быть риска утечек памяти.