0
boot_sections = ["123625","113231","11232","113216", ..... ];

for (var k in boot_sections) {
    $.get('/load?sectionId=' + boot_sections[k], function(data) {
        $('#sections').append(data);
    });
}

これは私が物をロードする場所です。

datepicker、lazyload、image preview を追加する必要がありますが、すべてのリクエストの読み込みが完了するまで待つ必要があります。

すべてのリクエストが完了したかどうかを確認するにはどうすればよいですか?

私は次のように試しました:

$('#sections:last-child').ready(function() { /* apply stuff here */ });

しかし、私はそれを機能させることができませんでした。

4

1 に答える 1

3

まあ...それはreadyメソッドの目的ではありません。もちろん、うまくいきませんでした。使用する必要があります$.when()

var requestArray = [];

for (var k in boot_sections) {
    requestArray.push($.get('/load?sectionId=' + boot_sections[k], function(data) {
        $('#sections').append(data);
    }));
}

$.when.apply($,requestArray).done(function(){
    // do stuff
})

また、配列を使用しているため、for-in ループを使用しないでください。jQueryには、配列を指定してこのコードを簡単にするメソッドがあります(オブジェクトでも機能します)

var requestArray = $.map(boot_sections,function(id) {
    return $.get('/load?sectionId=' + id, function(data) {
        $('#sections').append(data);
    });
}

$.when.apply($,requestArray).done(function(){
    // do stuff
})
于 2013-10-10T14:07:18.530 に答える