2012-12-14 81 views
7

我有CSS代碼:css動畫播放後jquery刪除類?

body.start{-webkit-animation:srcb ease-in .4s 1;} 

,當進入網站

,但問題是當動畫完成

的按鈕在我的網站是不是工作

只播放一次

如何在動畫完成後刪除機體類別「開始」

或刪除類別延遲x秒後呃動畫播放?

回答

24

您可以綁定到transitionend事件(對所有的人,實際上):

$("body").on(
    "transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd", 
    function() { 
     $(this).removeClass("start"); 
    } 
); 

如果你想實現一個延時,可以queue()清除類操作:

$("body").on(
    "transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd", 
    function() { 
     $(this).delay(1000).queue(function() { // Wait for 1 second. 
      $(this).removeClass("start").dequeue(); 
     }); 
    } 
); 

注意:on()自jQuery 1.7以來才存在,如果您使用的是舊版本,則必須使用bind()而不是上面的代碼工作。

+0

+1哇我不知道 –

+0

@jkjk,你能詳細說明這是不是工作?處理程序是否在瀏覽器上運行?您是否已將代碼放置在「ready」處理程序或位於頁面底部的「

1

另一種方式也許?

$(window).load(function(){ 
    setTimeout(function(){ 
     $('body.start').removeClass('start') 
    }, 4000); 
}); 
+0

謝謝,它的作品 –

+2

這個工程,但理論上它更脆弱。如果您需要立即刪除該類(例如,如果您在點擊時進行動畫製作),這不如聽動畫結尾事件。 – Pirijan

1

下面是代碼:

var div = document.querySelector('div'); 

function callback() { 
    div.classList.remove('start'); // or modify div.className 
} 

div.addEventListener("webkitAnimationEnd", callback, false); 

入住這live example上jsbin。

請注意,您的動畫和我的解決方案僅適用於基於webkit的瀏覽器。在生產環境中,您應該考慮其他瀏覽器強制性提供無前綴解決方案。

9

嘗試

webkitAnimationEnd oanimationend msAnimationEnd animationend 

,而不是

transitionend MSTransitionEnd webkitTransitionEnd oTransitionEnd 

這爲我工作。

+1

這個答案更像是對已接受答案的評論。請解釋如何使用這些屬性,以便答案可以獨立。 –

0
$("#mydiv").removeClass("start", 
    function() { 
     alert("do something"); 
    });