Отвязка в jQuery - PullRequest
       12

Отвязка в jQuery

8 голосов
/ 05 декабря 2010

Если элемент удаляется со страницы, автоматически ли отменяется привязка?Или это сценарий, в котором следует отменить привязку с помощью jquery unbind?

Я предполагаю, что это делается автоматически ...

1 Ответ

6 голосов
/ 05 декабря 2010

Если вы удаляете элементы, используя 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.

...