使用UpdatePanels在ASP页面中使用jQuery的正确方法

时间:2012-08-10 09:19:52

标签: jquery asp.net jquery-ui

我有一个ASP网页(.NET 3.5),上面有2个更新面板 我也在使用jQuery t显示技巧并使用jQuery UI创建标签。

网页工作正常,直到我更新UpdatePanel的内容。 在网上搜索并在我的网站上做点什么我得到了这个解决方案:

在我的页面标题中,我正在链接我的js文件:

<script type="text/javascript" src="../js/jquery-1.7.2.min.js"> </script>
<script type="text/javascript" src="../js/jquery-ui-1.8.20.custom.min.js"> </script>
<script type="text/javascript" src="../js/jquery.ui.selectmenu.js"></script>
<script type="text/javascript" src="../js/tipsy.js"></script>
<script type="text/javascript" src="scripts.js"></script>

然后我像我这样定义我的ToolkitScriptManager:

<asp:ToolkitScriptManager runat="server" EnablePartialRendering="True">
    <Scripts>
        <asp:ScriptReference Path="refresh.js"/>
    </Scripts>
</asp:ToolkitScriptManager>

我的refresh.js内容如下:

Sys.Application.add_init(AppInit);

function AppInit(sender) {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(End);
}

function End(sender, args) {
    initAll();
}

我的scripts.js看起来像这样:

...
//here I create all my functions
...

function initAll()
{
    //here I call I my functions
    $("#tip1").tipsy({ gravity: 'e', fade: true, offset: 10 });
    initDatePicker();
    $("#tabs").tabs();
    $("#radioset1").buttonset();
    $("#radioset2").buttonset();
    $('select').selectmenu();
    $("input:button, input:submit").button();
    initDatePickers();
    initAutocomplete();
}

$(function() {
    initAll();
});

//this function shows content of my page after jQuery is ready.
$(window).load(function() {
    $("#loading").hide("fast", function() {
        $("div.fullsize").show()
    })
});

这样我在页面加载时创建了所有功能,然后当我更新我的updatePanel时,它们被“刷新”。

这对我现在有用,但我想知道这是否是正确的方法并进行了优化。 当我在updatePanel刷新后在initAll函数中添加事件监听器时,它们会再次添加(我是对的吗?)。

我的问题:

  1. 在ASP页面中使用jQuery并使用的最佳方法是什么 它与updatePanels一起使用,以便在updatePanel更新jQuery代码之后 会工作的。
  2. 如何确保在我显示之前加载所有javascript 内容? $(window).load()够了吗?我在我的网站中使用了多个js文件 解决方案,我不希望我的网站因为我使用而抛出错误 函数来自未加载的文件。

0 个答案:

没有答案