1

アニメーションを直接処理するときに、コールバックを使用してアニメーションが終了するのを待つ方法を知っていますが、アニメーションが別の関数から呼び出された場合、どうすればよいですか?

たとえば、要素があり、#btnクリックするとアニメーションがトリガーされます。

$('#btn').click(function() {
   //bla bla...
});

$('#btn').click();次に、別の関数で使用して呼び出します。

function foo() {
   $('#btn').click();
   $('#avatar').fadeIn('slow'); //-->I want this animation to run after #btn has finished, but I don't know how to use a callback for this situation...
}
4

2 に答える 2

2

ある時点でページにアニメーションが1つしかない場合は、次のようなことを試すことができます。

function foo() {
   $('#btn').click();
   $(":animated").promise().done(function() {
      $('#avatar').fadeIn('slow');
    });
}
于 2013-01-01T17:26:07.837 に答える
2

使用できるpromise方法done

$('#btn').trigger('click').promise().done(function(){
     $('#avatar').fadeIn('slow');
});

http://jsfiddle.net/FsyBZ/

現在アニメーション化されている要素を選択した場合にのみ機能することに注意してください。最良のオプションは、animateコールバック関数を使用することです。

$('#elem').animate({}, duration, function(){
   // ...
})
于 2013-01-01T17:29:31.363 に答える