animationEnd 事件处理程序 - 事件被听到两次

animationEnd event handler - event heard two times

我有一个代码:

$('#sectionName').on('animationend webkitAnimationEnd oAnimationEnd', function () {
    alert("Hello");
});

这是为了在#sectionName 的动画结束时触发警报。

它完成了它的工作,但它也会在网站首次启动时被触发。

有什么办法可以预防吗?只有在第二次听到 animationend 事件时才触发此警报的方法?

PS 我正在使用 wow.js,所以 #sectionName 对象在滚动到某个页面点后滑入,然后我希望显示警报。

简单尝试:

Var firstTime = true
$('#sectionName').on('animationend webkitAnimationEnd oAnimationEnd', function () {
    if(firstTime){
        firstTime = false;
        return;
    }
    alert("Hello");
});

您可以使用 wow.js callback 捕捉动画开始:

var sections = ['sectionName', 'sectionName2']
var wow = new WOW({
  callback: function(box) {
    var $box = $(box);
    if ( sections.indexOf( $box.attr('id') ) >= 0 ) {
      $box.on('animationend webkitAnimationEnd oAnimationEnd', function () {
          alert("Hello");
      });    
    }
  }
}).init();

[https://jsfiddle.net/6g01kLsh/]

仅测试了 animationendwebkitAnimationEnd

var isWebkitAnim = window.onanimationend === undefined && window.onwebkitanimationend !== undefined
var animationEndEvent = isWebkitAnim ? 'webkitAnimationEnd' : 'animationend'

$('#sectionName').on(animationEndEvent, function() {
    alert("Hello")
})