15

出力を操作するために javascript / jquery を挿入できるページがあります。ページのマークアップなどを他に制御することはできません。

ページに表示されるたびに、jquery を介して追加の要素を追加する必要があります。問題は、要素が $(document).ready の完了後に発生する既存のページでの非同期呼び出しを介して生成されることです。

基本的に、ページが読み込まれ、その後の ajax 呼び出しが完了した後に jquery を呼び出す方法が必要です。ページでの ajax 呼び出しの完了を検出し、独自のカスタム関数を呼び出して、新しく作成された s の後に追加の要素を挿入する方法はありますか?

4

5 に答える 5

51

残念ながら、OPはコンテンツを実際にロードするためにjQuery ajaxメソッドを使用していないようですが、将来のグーグルがこれを行う場合に備えてここに残しておいてください。$.ajax()


ここでニーズを満たすグローバル ajax イベントのいずれかを使用できます。おそらく、 $.ajaxComplete()またはを使用しています$.ajaxSuccess()

例えば:

$(document).ajaxSuccess(function() {
  alert("An individual AJAX call has completed successfully");
});
//or...
$(document).ajaxComplete(function() {
  alert("ALL current AJAX calls have completed");
});

一般的な関数だけを実行したい場合は、それらをドキュメントに添付します (それらは下にある単なるイベントです)。モーダルやメッセージなど、特定のものを表示したい場合は、次のように、もう少しきれいに使用できます (ただし、これはあなたが求めているものではないようです)。

$("#myModal").ajaxComplete(function() {
  $(this).fadeIn().delay(1000).fadeOut();
});
于 2010-05-26T10:30:32.567 に答える
2

この例では、jQuery を使用して ajax 呼び出しの開始時と終了時に要素を表示および非表示にするだけです。

    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
    });

#contentLoadinggif 画像の進行状況インジケーターです。

于 2010-05-26T15:15:06.187 に答える
1

私が理解できるように、準備ができたハンドラーで jQuery の Ajax 関数を使用しています。したがって、Ajax 関数が応答を取得した後に呼び出される別の関数を渡すことができます。例えば

$(document).ready(function(){
    $("#some_div").load('/some_url/', function(){
        /* Your code goes here */
    });
});
于 2010-05-26T10:51:00.897 に答える
1

XMLHttpRequest オブジェクトの send() 関数を書き直すことができます。

ここで、純粋な Javascript を使用してこれを行うためのソリューションを参照してください。

于 2014-05-14T13:43:08.127 に答える
0

.live() / .delegate( )を使用できます。

于 2010-05-26T10:54:58.870 に答える