我确信我前几天读到了这个,但我似乎无法在任何地方找到它.
我有一个fadeOut()事件,之后我删除了元素,但jQuery删除元素才有机会完成淡出.
如何让jQuery等到元素淡出,然后将其删除?
Rei*_*ior 172
使用jQuery 1.6版本,您可以使用该.promise()方法.
$(selector).fadeOut('slow');
$(selector).promise().done(function(){
// will be called when all the animations on the queue finish
});
Run Code Online (Sandbox Code Playgroud)
Pao*_*ino 161
您可以指定回调函数:
$(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
});
Run Code Online (Sandbox Code Playgroud)
您也可以使用$.when()等到promise完成:
var myEvent = function() {
$( selector ).fadeOut( 'fast' );
};
$.when( myEvent() ).done( function() {
console.log( 'Task finished.' );
} );
Run Code Online (Sandbox Code Playgroud)
如果您正在做一个可能失败的请求,那么您甚至可以更进一步:
$.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"?' );
} );
Run Code Online (Sandbox Code Playgroud)
如果它想要切换的东西,淡出一个并在同一个地方淡化另一个,你可以在div上放置一个{position:absolute}属性,这样两个动画就可以在彼此之上播放,而你没有在开始下一个动画之前等待一个动画结束.
| 归档时间: |
|
| 查看次数: |
158715 次 |
| 最近记录: |