部分的なページポストバックを実行すると、イベント(jquery)を再バインドできますか?jqueryは部分ページポストバックでイベントを再バインドする必要があります
私が使用してすべてを配線しています:
$(document).ready(function(){};
を部分的なページポストバックの後、私のイベントが発射されていません。
部分的なページポストバックを実行すると、イベント(jquery)を再バインドできますか?jqueryは部分ページポストバックでイベントを再バインドする必要があります
私が使用してすべてを配線しています:
$(document).ready(function(){};
を部分的なページポストバックの後、私のイベントが発射されていません。
(見hereを持っている)部分ポストバックが終了した後に実行されるスクリプトを登録するためのScriptManagerクラスを使用することができますあなたが接続しようとしているイベントは、jQuery live eventsを使うことができます。
もう1つの方法は、イベント委任を手動で行うことです。それは "ライブ"イベントがカバーの下でやっているものです。イベントハンドラをドキュメント自体にアタッチし、イベントの送信者が期待する要素であれば条件付きでメソッドを実行します。
$(document).click(function(e){
if($(e.target).is(".collapseButton")){
$(this).find(".collapsePanel").slideToggle(500);
}
})
私はあなたがAsp.netの土地で働いている '部分ページのポストバック'から推測しています。
は、あなたはまだそのFUNC内のすべての通常のjQueryのものを使用することができるはず
Sys.Application.add_load(function() { });
を使用してみてください。
正確に。これは、MSがそのロードイベントを発明した理由です。彼らは部分的なポストバック後にDOM要素を吹き飛ばしてしまうことを知っていました。そして、派手なAJAX UpdatePanelsが使用されているかどうかにかかわらず、ない。 – JPot
パーフェクト。これはトリックでした。ちょうど私の同じセットアップ方法を直接このイベントを通して呼びましたが、今は完全に動作します。乾杯! –
一部のDOM要素は、部分的なポストバックを行うときに置き換えられます。もちろん、新しい要素はjQueryバインディングを失います。
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){});
それともそれが制御されている場合:あなたは、あなたがPageRequestManager endRequestEventにタップすることができますいずれか
jQuery 1.3 hereの「ライブ」機能を確認してください。将来の要素だけでなく、ページ上の現在の要素にもイベントを追加できます。これにより、コードを簡単に書くことができます。
使用 "の" イベント:
(jQueryの2.xのを使用して)最もエレガントな解決策はこれです。要素自体ではなく、ドキュメントにイベントをバインドすることを確認してください。
コード例:
$(document).on('click', 'div.messages', function() {
console.log('click on div.messages');
return false;
});
は、例えばdocument.readyにこのコードを入れてください。
div.messagesがUpdatePanel内で変更または作成された場合でも、これは機能します。そして、一度に2回以上発射されることはありません。
働いてくれてありがとう、それはエフェクティブではないが、この1ページのためだけだと思う。 – Blankman
実際には非常に効率的です。グリッドのすべての行にイベントハンドラーがある場合、グリッド全体に対して1つのイベントハンドラーしかありません。各行に複数のイベントハンドラがある場合は、さらに優れています。手動で作成された、または部分的なポストバックを介して作成された新しいレコードに添付するものは1つだけです。 – Mark