我在页面上嵌套了具有以下层次结构的用户控件:
母版页 - >内容页面 - > UpdatePanel - >用户控制 - > UpdatePanel - >儿童用户控制
我正在尝试写一个基本的东西写入控制台时,如下所示加载\用户控件(此代码片段位于子用户控件中):
<script type="text/javascript">
$(document).ready(function () {
console.log('Child control loaded');
});
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function () {
console.log('Child control re-loaded');
});
</script>
但它没有用。
我在内容页面上使用了pageLoad()函数,因此在子用户控件中使用另一个函数不是一个选项。此外,我不希望我的所有jQuery都驻留在内容页面上,我希望每个用户控件都负责维护所需的jQuery代码,这就是我试图弄清楚如何让它在我的Child用户中工作的原因控制。我已经在这里阅读了很多与此问题相关的帖子,但对我来说没有任何作用。我错过了什么吗?
更新1
我确定了我在内容页面上的向导控件存在的问题,我的用户控件在向导步骤内,并且没有一个触发jQuery事件但是一旦我将它们移出它们就完全正常。我仍在寻找解决方案来解决这个问题。
答案 0 :(得分:0)
我以前遇到过这个问题。您只需要一个存储函数的全局数组,以便从一个函数中循环并触发它们。您从PRM调用的那个函数。
主要脚本文件的顶部
var func = [];
function abc123 () { console.log( "abc123 () fired" ); }
func[ func.length ] = abc123;
在嵌套的用户控制脚本文件中
function def456 () { console.log( "def456 () fired" ); }
func[ func.length ] = def456;
主脚本文件的底部
function fireFunctions () { for (var i = 0; i < func.length; i++) func[i](); }
Sys.WebForms.PageRequestManager.getInstance().add_endRequest( fireFunctions );
Here's a CodePen that shows how the functionality works。显然它不能使用User Controls或UpdatePanels,但它可能有助于了解它是如何工作的。
<强>输出强>