簡體   English   中英

在foreach循環中通過Ajax加載內容后執行代碼

[英]Execute code after loading content via ajax in foreach loop

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和圖像預覽,但是我需要等待所有請求的加載完成

如何檢查所有請求是否都已完成?

我嘗試過:

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

但是我無法使它工作。

好吧……這不是現成的方法的目的,當然那是行不通的。 您需要使用$.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
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM