[解決済み] jQuery $(document).ready と UpdatePanels?
質問
UpdatePanel内の要素にマウスオーバー効果をかけるためにjQueryを使用しています。イベントは
$(document).ready
. 例えば
$(function() {
$('div._Foo').bind("mouseover", function(e) {
// Do something exciting
});
});
もちろん、これはページが最初にロードされたときには問題なく動作しますが、UpdatePanelがページの部分更新を行うときには実行されず、UpdatePanelの内部ではマウスオーバーの効果はもう機能しません。
最初のページロード時だけでなく、UpdatePanelがページの部分的な更新を行うたびに、jQueryでいろいろと配線するための推奨される方法は何でしょうか。ASP.NET ajaxライフサイクルを使用する必要がありますか?
$(document).ready
?
解決方法は?
UpdatePanelは、更新時にアップデートパネルの内容を完全に置き換えます。つまり、そのアップデートパネルに新しい要素があるため、購読していたイベントは購読されなくなります。
この問題を回避するために私が行ったことは、更新のたびに必要なイベントを再登録することです。私は
$(document).ready()
を最初の読み込みに使用し、その後、マイクロソフトの
PageRequestManager
(ページに更新パネルがある場合は利用可能) を使って、更新ごとに再登録します。
$(document).ready(function() {
// bind your jQuery events here initially
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
// re-bind your jQuery events here
});
は
PageRequestManager
は、更新パネルがページ上にある場合に自動的に利用可能になる javascript オブジェクトです。UpdatePanelがページ上にある限り、これを使用するために上記のコード以外のことを行う必要はありません。
より詳細な制御が必要な場合、このイベントは.NETイベントが引数を渡される方法と同様の引数を渡します。
(sender, eventArgs)
何がイベントを発生させたかを確認し、必要な場合のみ再バインドすることができます。
以下は、マイクロソフト社の最新版のドキュメントです。 msdn.microsoft.com/.../bb383810.aspx
あなたのニーズによっては、jQueryの
.on()
. これらの方法は、更新のたびに DOM 要素に再サブスクライブするよりも効率的です。しかし、この方法を使用する前に、すべてのドキュメントを読んでください。jQueryプラグインの中には、リファクタリングしてまで
.delegate()
または
.on()
そのような場合は、再登録することをお勧めします。
関連
-
Vueにシンプルなメモ帳機能を実装
-
Vueのフォームイベントのデータバインディングの説明
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] jQueryでチェックボックスに "checked "を設定する
-
[解決済み] jQueryの「exists」関数はありますか?
-
[解決済み] jQueryでテーブルの行を追加する
-
[解決済み] jQueryを使用しない$(document).ready相当
-
[解決済み] window.onload vs $(document).ready()
-
[解決済み】jQueryでチェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み】「.addEventListener is not a function」なぜこのエラーが発生するのか?