【问题标题】:Detect which AnimationEnd has fired via animationName检测通过 animationName 触发了哪个 AnimationEnd
【发布时间】:2012-07-22 02:10:47
【问题描述】:

我有几个 CSS3 动画链接到一个 div,但我只想在最后一个动画结束时调用一个函数。

我使用了 animationEnd 事件,以便我可以触发所述功能,但正如我所说,我只希望它在最后一个动画上运行。

有没有办法通过检查触发 animationEnd 事件的动画名称来检测动画是否结束?

因此允许我使用 if 语句来挑选出最后一个动画。

【问题讨论】:

  • 嗯,你回答了你自己的问题:检查触发的动画名称the animationEnd event
  • if (event.animationName === "myAnimation") ...
  • 啊!我不能再傻了。一定是这个夏天的炎热。谢谢雷
  • 这在 webkit 中运行良好,但在 Firefox 中不起作用。收到“未定义事件”错误。
  • 嗯,它是传递给您的处理程序的参数的名称。您是否正确声明了您的处理程序?

标签: javascript css detect css-animations keyframe


【解决方案1】:

定义函数时需要该参数。这些中的任何一个都应该工作;

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');
     }
}

【讨论】:

【解决方案2】:

我不知道为什么...但我只能通过 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;
}

【讨论】:

  • 我认为如果你使用的是 jQuery,那么事件都是 jQuery 化的,所以你必须访问原始事件才能找到 animationName 属性。
猜你喜欢
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 2015-07-03
  • 2017-01-12
相关资源
最近更新 更多