Если вы удаляете элементы, используя remove
или empty
, обработчики событий будут автоматически удалены во избежание утечек памяти.В противном случае они останутся, если они не будут явно отменены до удаления этих элементов.
EDIT: Оказывается, .html
также удалит обработчики событий, вызвав внутренний метод .cleanData
(объявленный в строке 5177).Вы можете проверить это в source :
html: function( value ) {
...
for ( var i = 0, l = this.length; i < l; i++ ) {
// Remove element nodes and prevent memory leaks
if ( this[i].nodeType === 1 ) {
jQuery.cleanData( this[i].getElementsByTagName("*") );
this[i].innerHTML = value;
}
}
...
Поэтому, чтобы избежать утечек памяти, не используйте напрямую innerHTML
для замены элементов DOM, которые подключили обработчики событий jQuery.