昨天我开始使用ascx并开始将我的“动态”default.aspx页面切成更小的部分。
在我的default.aspx中,我有很多处理不同事件的JavaScript / jquery代码。当我从.aspx中删除一些html代码,同时将javascript保留在default.aspx中,并将其放入.ascx时,jquery事件停止工作,我是否必须编写一些特殊内容以便我的JavaScript可以访问我的usercontrol中的html?
由于 中号
答案 0 :(得分:0)
客户端JavaScript不了解ascx。 ascx在发送到浏览器之前包含在页面中,因此浏览器只将其视为单页。
JavaScript更有可能停止工作,因为它无法找到具有特定id或类的元素。这可能是由于多种原因而发生的,例如元素实际上已丢失或.net已动态更改了id。
答案 1 :(得分:0)
我的网页包含也包含其他用户控件的用户控件。 我对事件和具有此结构的页面呈现堆栈有同样的问题。为了解决这个问题,我将用户控件特定事件管理放在一个单独的.js文件中,例如mycontrol.js,并在.ascx文件中引用.js(将链接放在那里)。
我还有一种情况,即在放入标记(子控件)之前我没有渲染用户控件,因此无法在那时放置事件。我通过在我的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');
编辑:另一个可能适合您的选项我最初忘记使用.live()
和/或.delegate()
功能。
答案 2 :(得分:0)
考虑到当你将它们放在用户控件中时,元素ID会从Control1等变为ctl00stuff_Control1