0

jQuery の ajax 関数$.get()を使用して、ページからデータをダウンロードしています。次に、そのデータを を使用して jQuery オブジェクトにキャストし$(data)、DOM ツリーを構築できるようにします。次に、このデータを追加しますappend()

loadjQuery が、データの iframes/images/videos の読み込みが完了したときに通知するのと同様のイベントを発生させる方法はありますか? ?の前または後のどちらappend()

jQuery のドキュメントによると、loadイベントは特定のオブジェクトでのみ発生します。

このイベントは、URL に関連付けられた任意の要素 (画像、スクリプト、フレーム、iframe、および window オブジェクト) に送信できます。

すべてのデータをループしてload、これらのオブジェクトのそれぞれにリスナーをアタッチし、存在するオブジェクトの数を数えて、loadその数が合計に達するまで、ロードされた (または既にキャッシュされた) 数をハンドラーにカウントさせることができます。ただし、このソリューションの代替手段を探しています。

andを介してオブジェクトにloadイベントをアタッチしようとしましたが、これらはアクティブなページが最初に読み込まれたときに 1 回だけ発生します。windowload()on()

これが私のコードです:

$.get(url_string, function(data) {
    // Create DOM elements out of the downloaded html text 'data'
    // and take a subset of the DOM elements, where the id is #content
    var myContents = $(data).find("#content");

    // Insert DOM elements into the active page
    $("#destination").append(myContents);

    // Check when all images/iframes/video elements have loaded
    // Does not work
    $("#destination").load(function() {
        alert("new stuff loaded");
    });

    // Does not work either
    myContents.load(function() {
        alert("new stuff loaded");
    });
});

この質問はにリンクされています

しかし、これらで提供される解決策は、私が上で述べたすべてのものであり、そこにあるオブジェクトの数を数え、合計に達したときに確認する必要があります。

4

2 に答える 2

0

コンテンツのロード後にロード イベントを割り当てようとしています。コンテンツを追加する前に定義してください。

これを試して、

$.get(url_string, function(data) {
    // Create DOM elements out of the downloaded html text 'data'
    // and take a subset of the DOM elements, where the id is #content
    var myContents = $(data).find("#content");

    // Check when all images/iframes/video elements have loaded
    $("#destination").load(function() {
        alert("new stuff loaded");
    });

    myContents.load(function() {
        alert("new stuff loaded");
    });

    // Insert DOM elements into the active page
    $("#destination").append(myContents);
});
于 2012-10-11T16:22:20.727 に答える
0

現在、jQuery の最新バージョン (1.8.2) は、HTML が追加されたときに DOM Ready イベントを発生させることをサポートしていません。

于 2012-10-31T12:45:52.043 に答える