我确信我前几天读到过这篇文章,但是我似乎到处都找不到它。
我有一个fadeOut()
事件,之后我删除了元素,但是jQuery在元素有机会完成淡出之前就删除了元素。
如何让jQuery等待元素淡出,然后将其删除?
发布于 2009-06-30 20:16:32
您可以指定回调函数:
$(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
});
发布于 2011-08-23 20:38:46
在jQuery 1.6版本中,您可以使用.promise()
方法。
$(selector).fadeOut('slow');
$(selector).promise().done(function(){
// will be called when all the animations on the queue finish
});
发布于 2013-09-29 14:43:24
您也可以使用$.when()
等待,直到promise
完成:
var myEvent = function() {
$( selector ).fadeOut( 'fast' );
};
$.when( myEvent() ).done( function() {
console.log( 'Task finished.' );
} );
如果你正在做一个可能会失败的请求,那么你甚至可以更进一步:
$.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"?' );
} );
https://stackoverflow.com/questions/1065806
复制相似问题