(Примечание: ниже я использую jQuery, но вопрос действительно общий для Javascript.)
Скажем, я получил div # formsection
, содержимое которого постоянно обновляется с использованием AJAX, например:
var formSection = $('div#formsection');
var newContents = $.get(/* URL for next section */);
formSection.html(newContents);
Каждый раз, когда я обновляю этот div, я запускаю пользовательское событие , которое связывает обработчики событий с некоторыми из недавно добавленные элементы, например:
// When the first section of the form is loaded, this runs...
formSection.find('select#phonenumber').change(function(){/* stuff */});
...
// ... when the second section of the form is loaded, this runs...
formSection.find('input#foo').focus(function(){/* stuff */});
Итак: я привязываю обработчики событий к некоторым узлам DOM, а затем удаляю эти узлы DOM и вставляю новые ( html ()
делает это) и привязка обработчиков событий к новым узлам DOM.
Удаляются ли мои обработчики событий вместе с узлами DOM, к которым они привязаны? Другими словами, когда я загружаю новые разделы, появляется множество бесполезных обработчиков событий. p в памяти браузера, ожидая событий на узлах DOM, которые больше не существуют, или они очищаются при удалении их узлов DOM?
Бонусный вопрос: как я могу это проверить?