У меня есть страницы, которые содержат пользовательские элементы управления, которые также содержат другие пользовательские элементы управления.
У меня была такая же проблема с событиями и стеком рендеринга страниц с этой структурой. Чтобы решить эту проблему, я поместил управление событиями, специфичными для пользовательских элементов управления, в отдельный файл .js, такой как mycontrol.js, и сослался на этот файл .js в файле .ascx (поместите ссылку на него там).
У меня также была ситуация, когда у меня не отображался пользовательский элемент управления, пока он не был помещен в разметку (подэлемент управления), и поэтому события не могли быть размещены в этой точке. Я справился с этим, загрузив пользовательские элементы управления javascript в свой javascript следующим образом:
/* function to allow inclusion of other files
Included this way to allow addition AFTER the page renders the control - that is, fake inclusion in this file
*/
function includeJS(jsPath)
{
var script = document.createElement("script");
script.setAttribute("type", "text/javascript");
script.setAttribute("src", jsPath);
document.getElementsByTagName("head")[0].appendChild(script);
};
includeJS('Js/secondusercontrol.js');
- Отдельный код скрипта для пользовательских элементов управления и ссылки внутри пользовательских элементов управления
- Включить файлы .js, используя скрипт, если задержка является проблемой
- поместить все "базовые" сценарии и глобальные объекты (при необходимости) в файл страницы .js
- используйте .live () и .delegate ()
РЕДАКТИРОВАТЬ: еще одна опция, которая может сработать для вас, которую я забыл изначально, - это использовать функциональность .live()
и / или .delegate()
.