Обычно обработчики событий исчезают, когда элемент удаляется.Очистка innerHTML
контейнера уничтожает все содержащиеся в нем элементы, таким образом, прикрепленные обработчики событий.
В более старых версиях Internet Explorer (<= IE8) возникают проблемы с повторным запросом памяти у обработчиков событий, когда владелец элемента был уничтожен.,Чтобы приспособить их, вы должны использовать <code>Event.stopObserving.
. Чтобы быть абсолютно уверенным, вы можете расширить Element
следующим образом:
Element.addMethods({
clear: function(element) {
element = $(element);
element.descendants().each(function(elem) {
Event.stopObserving(elem);
});
return element.update();
}
});
Это удалит все события из всех потомков перед повторнымустановка самого содержимого элемента.Кажется, что Event.stopObserving()
сам по себе не является рекурсивным, поэтому без этого шага все еще могут быть утечки из элементов «дальше вниз».Используйте это следующим образом:
$('container').clear();
Смотрите это как jsFiddle.
Отказ от ответственности: я не знаком с прототипом.Если вышеприведенное неверно, оставьте комментарий.
Связанное чтение: