2013-04-09 7 views
1

Общеизвестно, что виджеты jQuery внутри ASP UpdatePanels необходимо повторно инициализировать после запроса ajax, однако моя проблема заключается в том, что события не отключаются до замены HTML внутри UpdatePanel , jQuery позаботится об этой проблеме для вас всякий раз, когда вы вызываете .html («...») или .remove(), но UpdatePanel не использует jQuery.Отключить события в ASP UpdatePanel ПЕРЕД Ajax Запрос на предотвращение утечки памяти

У меня есть элементы popup (внутри UpdatePanel), которые нужно скрывать, когда пользователь нажимает на них, поэтому я сделал специальное событие jQuery для обнаружения, когда это произойдет, однако функция Teardown никогда не вызывается после запроса Ajax , Поэтому со временем на элементы, которые больше не привязаны к документу, все больше обработчиков событий.

У меня может быть моя функция инициализации виджета (которая запускается после каждого запроса Ajax), проверяйте отдельные элементы и отвязывайте их события, но я боюсь, что это может вызвать другие проблемы в будущем.

ответ

0

Похоже, это простое решение, связанное с событием «clickout», когда всплывающее окно отображается и отвязывает его, когда всплывающее окно скрыто. Это по-прежнему оставляет возможность для одного события не быть несвязанным из-за запроса ajax, но это допустимо.

1

Хотя я решил вопрос с моим предыдущим ответом, эта статья по проекту Кодекса может быть помощью к другим с аналогичными проблемами: http://www.codeproject.com/Articles/34348/jQuery-Memory-Leak-in-UpdatePanel

Сначала это предполагает использование Sys.Application.add_load, который бежал на PageLoad и после того, как ASP Ajax хотя это не решит вашу утечку памяти.

Во-вторых, будьте осторожны с тем, как вы связываете события через закрытие javascript. Однако это может не полностью решить конкретные проблемы UpdatePanel.

В-третьих, вы можете добавить функцию dispose к элементам HTML, которая выполняется, когда ASP разрушает HTML с помощью запроса ajax. Функция dispose должна отключать обработчики событий, чтобы удалить любые другие ссылки на элемент. Это должен быть последний гвоздь в гробу для утечек памяти ASP UpdatePanel.