首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何让jQuery等待特效完成?

如何让jQuery等待特效完成?
EN

Stack Overflow用户
提问于 2009-06-30 20:15:37
回答 4查看 173.4K关注 0票数 111

我确信我前几天读到过这篇文章,但是我似乎到处都找不到它。

我有一个fadeOut()事件,之后我删除了元素,但是jQuery在元素有机会完成淡出之前就删除了元素。

如何让jQuery等待元素淡出,然后将其删除?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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
});

Documentation here

票数 174
EN

Stack Overflow用户

发布于 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
});
票数 187
EN

Stack Overflow用户

发布于 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"?' );
    } );
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1065806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档