[jquery] 효과가 끝날 때까지 jQuery를 기다리는 방법은 무엇입니까?

나는 요 전에 이것에 대해 읽었을 것이라고 확신하지만 어디서도 찾을 수없는 것 같습니다.
나는이 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} 속성을 배치 할 수 있으므로 두 애니메이션이 서로 겹쳐서 재생됩니다. 다음 애니메이션을 시작하기 전에 한 애니메이션이 끝날 때까지 기다립니다.


답변