jQuery在使用updatepanel的ASP.NET用户控件中不起作用

时间:2014-07-31 22:21:24

标签: jquery asp.net updatepanel webusercontrol

我在页面上嵌套了具有以下层次结构的用户控件:

母版页 - >内容页面 - > 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事件但是一旦我将它们移出它们就完全正常。我仍在寻找解决方案来解决这个问题。

1 个答案:

答案 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,但它可能有助于了解它是如何工作的。

<强>输出

enter image description here