2014-01-29 3 views
3

Если я делаю запросы ajax, которые удаляют тело HTML и добавляет новый HTML, нужно ли также удалять любые обработчики событий, которые были добавлены в предыдущий HTML?Нужно ли очищать обработчики событий при изменении DOM?

Я заметил, что если я этого не сделаю, все будет хорошо. Браузер освобождает память и прочее? Что делать, если я делаю тысячи таких запросов ajax без обновления браузера? Смогу ли я получить утечки памяти?

ответ

1

Если добавить JQuery обработчиков событий:

  • они будут очищены, если вы используете JQuery удаление/замена функции
  • они не будут очищены, если вы используете прямые функции DOM

В большинстве документации по функциям у вас есть комментарий, аналогичный this one:

Whe n .html() используется для установки содержимого элемента, любой контент, который был , в этом элементе полностью заменяется новым контентом. Кроме того, jQuery удаляет другие конструкции, такие как данные и события обработчики из дочерних элементов, прежде чем заменять эти элементы новым контентом .

Если вы последовательны, у вас не будет утечки памяти, вам не нужно вручную удалять данные или обработчики событий. Обычно нет проблем с тем, чтобы страница хранилась в течение нескольких дней и выдавала тысячи запросов Ajax и соответственно меняла экран.

+0

Спасибо. Четкий ответ и прямо к точке :) О, страница не будет открыта в течение нескольких дней, я просто пытаюсь создать «живую» административную область – thelolcat

Смежные вопросы