我有一个使用 css 转换的自定义动画框架。
为了允许回调我附上
$element.one('webkitTransitionEnd transitionend',function(){
$element.css({
'-webkit-transition':'',
/* And so on... */
});
if(callback){
// This is to make sure that chained events are not fired before the styling is flushed to the DOM, otherwise some animations will not have css transitions
setTimeout(function(){
callback();
},0);
}
});
$element.css({
'-webkit-transition':'height '+duration+'s ease-out',
/* And so on... */
});
$element.css('height',height);
但是,一些相同的事件侦听器会一次又一次地触发(是的,它实际上是具有相同 guid 的相同函数,我检查过)。似乎 .one 没有再次正确删除它。
我试过用一个小测试修复
var used = false;
$element.one('webkitTransitionEnd transitionend',function(){
if(!used){
used = true;
/* Rest of function... */
}
}
如果他们被解雇了,我会使用布尔值来跟踪他们是否被解雇,所以我至少阻止他们重新解雇。但我想知道他们为什么要重新开火。