2012-07-23 75 views
8

我有幾個鏈接到一個div的CSS3動畫,但我只想要一個函數在最後一個動畫結束時被調用。檢測哪個AnimationEnd通過動畫名稱觸發了

我已經使用了animationEnd事件,以便我可以觸發上述功能,但正如我所說的,我只想讓它在最後一個動畫上運行。

有沒有一種方法來檢測動畫已結束通過檢查動畫的名稱已觸發animationEnd事件?

因此允許我使用if語句來選出最後一個動畫。

+0

恩,你回答了你自己的問題:檢查animati的名字觸發了這個[animationEnd'事件](http://www.w3.org/TR/css3-animations/#animation-events)。 – 2012-07-23 19:42:35

+1

'if(event.animationName ===「myAnimation」)...' – 2012-07-23 20:35:36

+0

啊!我感覺不到更愚蠢。一定是今年夏天的高溫。 Thankyou Ray – Damon 2012-07-23 20:40:06

回答

7

當您定義函數時,該參數是必需的。其中任何一個都可以工作;

var $element = $('.eye').bind("webkitAnimationEnd oAnimationEnd msAnimationEnd animationend", function(event){ 
    if (event.originalEvent.animationName === "three") { 
     console.log('the event happened'); 
    } 
} 

或者,

var $element = $('.eye').bind("webkitAnimationEnd oAnimationEnd msAnimationEnd animationend", function(e){ 
    if (e.originalEvent.animationName === "three") { 
     console.log('the event happened'); 
    } 
} 
+0

已經試過,克萊格先生 – Damon 2012-07-24 18:38:18

+0

我不認爲你可以綁定這樣的多個條件。這是否有幫助:http://jsfiddle.net/HeX5E/ – mattclegg 2012-07-25 13:35:37

5

我不知道爲什麼...但我只能通過e.originalEvent.animationName

趕上了animationName所以最好的選擇是:

function getAnimationName(e) { 
    if(e.animationName != undefined) return e.animationName; 
    if(e.originalEvent.animationName != undefined) return e.originalEvent.animationName; 
    else return undefined; 
} 
+1

我想如果你使用jQuery,那麼事件都是jQuery-ified,所以你必須訪問原始事件才能找到animationName屬性。 – 2015-12-15 17:16:07