Jquery .when e più .load

Voglio avere una function di richiamata dopo che le azioni sono state fatte, sto provando qualcosa di simile:

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

Il problema è che la function di richiamata sta sparendo prima che le azioni siano terminate.

Questo perché jQuery.when () prevede le istanze jQuery.Deferred mentre load () restituisce un'istanza jQuery (vedere http://api.jquery.com/jQuery.when/ e http://api.jquery.com/load/ ).

È ansible risolvere questo problema:

 // 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(); }); 

Faccio un codice simile ma per le immagini in modo più dinamico. Spero che aiuti.

 var deferreds = []; // Create a deferred for all images $('.my-img-class').each(function() { deferreds.push(new $.Deferred()); }); var i = 0; // When image is loaded, resolve the next deferred $('.my-img-class').load(function() { deferreds[i].resolve(); i++; }); // When all deferreds are done (all images loaded) do some stuff $.when.apply(null, deferreds).done(function() { // Do some stuff });