2013-11-22 1 views
1

Требуется ли выполнить jQueryunbind() или off() функции для HTML элементов перед вызовом jQueryhtml(), чтобы избежать утечек памяти?Нужно ли делать отвязать() или выключить() перед вызовом HTML()

+3

@Florent Абсолютно нет ... –

+0

Так, 'jQuery' умный :) – Warlock

+3

Исправление: люди, которые * написали * jQuery, умны;) – George

ответ

7

Нет, это не требуется.

Функция html выполняет все операции по очистке до установки innerHTML.

От the documentation:

Кроме того, JQuery удаляет другие конструкции, такие как данные и событие обработчиков из дочерних элементов перед заменой этих элементов с новым содержанием.


Детали реализации:

html функция называет empty чей код здесь:

empty: function() { 
    var elem, 
     i = 0; 

    for (; (elem = this[i]) != null; i++) { 
     // Remove element nodes and prevent memory leaks 
     if (elem.nodeType === 1) { 
      jQuery.cleanData(getAll(elem, false)); 
     } 

     // Remove any remaining nodes 
     while (elem.firstChild) { 
      elem.removeChild(elem.firstChild); 
     } 

     // If this is a select, ensure that it displays empty (#12336) 
     // Support: IE<9 
     if (elem.options && jQuery.nodeName(elem, "select")) { 
      elem.options.length = 0; 
     } 
    } 

    return this; 
}, 
Смежные вопросы