2 つの更新パネルがある ASP Web ページ (.NET 3.5) があります。
また、jQuery t を使用してヒントを表示し、jQuery UI を使用してタブを作成します。
UpdatePanel のコンテンツを更新するまで、Web ページは正常に動作します。ネットで検索して、自分のネットで何かをすることで、この解決策が生まれました:
私のページのヘッダーで、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 ファイルを使用していますが、ロードされていないファイルの関数を使用しているため、サイトでエラーが発生することは望ましくありません。