/ / Від’єднати події в ASP UpdatePanel ПЕРЕД ЗАПИТАННЯ Ajax для запобігання витоку пам'яті - jquery, asp.net, updatepanel, unbind, teardown

Розв'язати події в ASP UpdatePanel ПЕРЕД Ajax Запит, щоб запобігти витік пам'яті - jquery, asp.net, updatepanel, unbind, teardown

Це поширена проблема, що віджети jQuery всерединіASP UpdatePanels потребує повторної ініціалізації після запиту на ajax, проте моя проблема полягає в тому, що події не є незв'язаними до заміни HTML всередині UpdatePanel. jQuery піклується про цю проблему для вас, коли ви дзвоните .html ("...") або .remove (), але UpdatePanel не використовує jQuery.

У мене є спливаючі елементи (всерединіUpdatePanel), яку потрібно приховати, коли користувач клацне поза ними, тому я зробив спеціальну подію jQuery для виявлення, коли це відбувається, однак функція Teardown ніколи не викликається після запиту Ajax. Тому з часом з’являється все більше обробників подій на елементах, які більше не прикріплені до документа.

Я міг би мати свою функцію ініціалізації віджетів.

Відповіді:

1 для відповіді № 1

Хоча я вирішив це питання за допомогою своєї попередньої відповіді, ця стаття про Code Project може допомогти іншим із подібними проблемами: http://www.codeproject.com/Articles/34348/jQuery-Memory-Leak-in-UpdatePanel

Спочатку пропонує використовувати Sys.Application.add_load який працює на завантаженні сторінки та після запитів ASP Ajax, хоча це не вирішить вашу витік пам'яті.

По-друге, будьте обережні, як пов’язувати події за допомогою закриття javascript. Однак це може не повністю вирішити специфічні проблеми UpdatePanel.

По-третє, ви можете додати dispose функція для елементів HTML, яка виконується, колиASP знищує HTML із запитом ajax. Функція dispose повинна від’єднувати обробники подій, щоб видалити будь-які інші посилання на елемент. Це має бути завершальним цвяхом у труні для витоку пам'яті ASP UpdatePanel.


0 для відповіді № 2

Здається, це рішення є простим,яка пов'язує подію "clickout", коли відображається спливаюче вікно, і від'єднувати його, коли спливаюче вікно приховане. Це все ще залишає потенціал, що жодна подія не може бути незв'язаною через запит на ajax, але це допустимо.