Удаляются ли обработчики событий на узле DOM вместе с узлом?

(Примечание: ниже я использую 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?

Бонусный вопрос: как я могу это проверить?

32
задан Nathan Long 2 December 2010 в 17:01
поделиться