0

部分的なページ更新を実行する領域内の要素を選択する jQuery スクリプトがいくつかあります。

この CSS トリック コード スニペットを使用して、ページのその部分を更新しています。

$('#refreshbutton').click(function() {

 var url = "http://myUrl.com/indexTest.php?ID=" + Math.random(); 

 setTimeout(function() {
        $("#maindisplay").load(url+" #maindisplay>*","");
 }, 100); 
});

問題は、#maindisplay 内の要素が変更され、dom 内の新しい要素と見なされることです。これらの要素を選択して関数をアタッチするスクリプトは、部分的な更新中ではなく domready で実行されるため、問題が発生します。

これまでのところ、部分的に更新した後、#maindisplay 内の要素にスクリプトを再アタッチする方法を見つけることができませんでした。

私の質問は次のとおりです。ページの更新された領域にスクリプトを再添付する最適な方法は何ですか。

アドバイスありがとうございます。

4

3 に答える 3

1

live()関数を使用して、クリック ハンドラーをアタッチする必要があります。

于 2010-08-26T19:23:02.083 に答える
0

私が考えることができる次のオプションがあります。

  • アタッチを関数に入れ、ページの更新時にその関数を呼び出します
  • .live() 機能を使用する
  • .delegate() 機能を使用する
  • 機能への Javascript 参照を更新の参照に入れ、その更新の一部として実行されるようにします。
  • 関数をコールバックに入れる
  • setTimeout の一部にする
  • 私が考えもしなかった他の創造的な方法...

注意: 最近のバージョン (たとえば 1.4.2 で利用可能) でコンテキスト選択が追加された .delegate() を調べます。

于 2010-08-26T19:32:25.403 に答える
0

load() は、2 番目の引数としてコールバック関数を取りませんか? その関数を持つ要素にイベント ハンドラーを再アタッチしてみませんか?

$('#result').load('ajax/test.html', function() {
  //reattach event handlers here.
});
于 2010-08-26T19:19:37.397 に答える