小编典典

jQuery .when和多个.load

ajax

我想在操作完成后使用一个回调函数,我正在尝试如下操作:

$.when(
    $('#detail1').load('/getInfo.php'),
    $('#detail2').load('/getOther.php')
        ).then(function(a,b){
            alert("done");
        });

问题在于,在操作完成之前会触发回调函数。


阅读 326

收藏
2020-07-26

共1个答案

小编典典

这是因为jQuery.when()需要jQuery.Deferred实例,而load()返回jQuery实例(请参见http://api.jquery.com/jQuery.when/http://api.jquery.com/load/)。

您可以解决此问题:

// Create two Deferred instances that can be handed to $.when()
var d1 = new $.Deferred();
var d2 = new $.Deferred();

// Set up the chain of events...
$.when(d1, d2).then(function() {
    alert('done');
});

// And finally: Make the actual ajax calls:
$('#detail1').load('/getInfo.php', function() { d1.resolve(); });
$('#detail2').load('/getOther.php', function() { d2.resolve(); });
2020-07-26