나는 요 전에 이것에 대해 읽었을 것이라고 확신하지만 어디서도 찾을 수없는 것 같습니다.
나는이 fadeOut()
내가 요소를 제거 후 이벤트를하지만 페이드 아웃 완료 할 수있는 기회를하기 전에 jQuery를이 요소를 제거하고 있습니다.
요소가 사라질 때까지 jQuery를 기다린 다음 제거하려면 어떻게해야합니까?
답변
콜백 함수를 지정할 수 있습니다.
$(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 버전에서는이 .promise()
방법을 사용할 수 있습니다 .
$(selector).fadeOut('slow');
$(selector).promise().done(function(){
// will be called when all the animations on the queue finish
});
답변
완료 $.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"?' );
} );
답변
전환하려는 경우 하나는 페이드 아웃하고 다른 하나는 같은 위치에서 페이드하는 경우 div에 {position : absolute} 속성을 배치 할 수 있으므로 두 애니메이션이 서로 겹쳐서 재생됩니다. 다음 애니메이션을 시작하기 전에 한 애니메이션이 끝날 때까지 기다립니다.