2016-08-24 21 views
0

私は複数のアニメーションを持っていますが、すべてのアニメーションが完了した後に私のコードを実行したいと思います。jQueryですべてのアニメーションが終了するのを待つ方法は?

このコードの問題は、最初のアニメーションの実行後に実行され、すべてのアニメーションが完了するのを待つことではありません。

どのような解決策ですか?

<style> 
    .userClass { 
     animation: show 7s 6s forwards,zoom 8s 6s forwards,hide 5s 13s forwards;} 


@@-webkit-keyframes show{ 
     0% { 
      opacity: 1; 
     } 

     100% { 
      opacity: 0; 
     } 
    } 
@@-webkit-keyframes zoom{ 
    // 
    } 
@@-webkit-keyframes hide{ 
    // 
    } 

</style> 


<div class="userClass" id="user"></div> 

<script> 
$(document).ready(function() { 

$("#user").bind("animationend", function() {   
      setTimeout(function() { 
      //I want to execute code here 
      }, 3000); 

     }); 
}); 
</script> 
+1

可能な複製(http://stackoverflow.com/questions/9255279/callback-when-css3-transition-finishes) – Andreas

+0

'$(」セレクタ').one(' webkitAnimationEnd mozAnimationEnd MSAnimationEndアニメーション終了アニメーション終了、doSomething); ' –

+0

@BrettGregsonこれは機能しません、最初のアニメーション終了を検出しています... tnx –

答えて

1

"animationend"イベントは、最初に13秒後に再び1秒後に3回、4秒後(合計18秒後)に3回発生します。

varをカウントして、3番目のイベントのみを処理します。

+0

あなたの答えはありがたいですが、より動的な方法で解決することはできませんか? –

+0

私は、ビュー内のすべてのアニメーションの終了を検出するようなものです。 –

1

animationEndが何回起きたかを記録するための変数を作成する - コードが実行されるのは3回目です。このような何か:。

$(document).ready(function() { 

    // Keep track of how many animations have ended 
    var animationEndCount = 0; 

    $("#user").bind("animationend", function() { 

    // Increment our counter 
    animationEndCount++; 

    // IF our counter is 3, run some code 
    if (animationEndCount === 3) { 
     setTimeout(function() { 

     }, 3000); 
    } 
    }); 
}); 
[CSS3トランジションが終了コールバック]の
関連する問題