Yanıtlar:
Bir geri arama işlevi belirtebilirsiniz:
$(selector).fadeOut('slow', function() {
// will be called when the element finishes fading out
// if selector matches multiple elements it will be called once for each
});
JQuery 1.6 sürümü ile .promise()yöntemi kullanabilirsiniz .
$(selector).fadeOut('slow');
$(selector).promise().done(function(){
// will be called when all the animations on the queue finish
});
promise()veya kullanarak when()ve done()3. taraf yöntemlerden veya hatta kendi yönteminizden çok güzel bazı davranışlardan yararlanabilirsiniz. Anlamlandırma için +1 .promise()!
$(selector).fadeOut('slow').promise().done(function(){...});
$.when()Bitene kadar beklemek için de kullanabilirsiniz promise:
var myEvent = function() {
$( selector ).fadeOut( 'fast' );
};
$.when( myEvent() ).done( function() {
console.log( 'Task finished.' );
} );
Başarısız olabilecek bir istek yapıyorsanız, bir adım daha ileri gidebilirsiniz:
$.when( myEvent() )
.done( function( d ) {
console.log( d, 'Task done.' );
} )
.fail( function( err ) {
console.log( err, 'Task failed.' );
} )
// Runs always
.then( function( data, textStatus, jqXHR ) {
console.log( jqXHR.status, textStatus, 'Status 200/"OK"?' );
} );
$.when()işe yaramıyor çünkü myEvent()bir söz $.when()vermiyor ve işini yapması için bir veya daha fazla söz vermenizi bekliyor.
Değiştirmek istediğiniz bir şey varsa, birini soldurup aynı yere diğerini soldurursanız, div'lere bir {position: absolute} özelliği yerleştirebilirsiniz, böylece her iki animasyon da birbirinin üzerinde oynatılır ve sizde Bir sonraki animasyona başlamadan önce bir animasyonun bitmesini beklemek.