我有一个 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 时,它们被“刷新”。
这现在对我有用,但我想知道这是否是正确的方法并进行了优化。当我initAll
在 updatePanel 刷新后在函数中添加事件侦听器时,它们会再次添加(对吗?)。
我的问题:
- 在 ASP 页面中使用 jQuery 并将其与 updatePanels 一起使用的最佳方法是什么,以便在 updatePanel 更新后 jQuery 代码可以工作。
- 如何确保在显示我的内容之前加载所有 javascript?够
$(window).load()
了吗?我在我的解决方案中使用了多个 js 文件,我不希望我的网站抛出错误,因为我使用了未加载文件中的函数。