我正在编写一个使用事件webkitTransitionEnd的Web应用程序(用于iPad).
我希望在第二次转换结束时回调函数.有两个转换的原因是因为一个具有-webkit-transition-delay属性,因此它们的两个动画不会同时结束.由于这是一系列动画,我想仅在第二次转换完成时调用该函数.
我当前(愚蠢的)解决方法是将事件绑定到事件中,在jQuery中看起来像这样.
$(this).bind('webkitTransitionEnd',function(){ $(this).bind('webkitTransitionEnd',function(){ \*some code here*\ $(this).unbind(); }); $(this).unbind(); });
这有效,但是当有更多动画时它不可用.假设我想在50个动画之后回调一个函数,该动画在不同的时间结束.
解决方法
这没有经过测试,但应该给你一个好主意.
function waitOnTransition(elem,endIndex,callback){ var transitionIndex = 0; $(elem).on('webkitTransitionEnd',function(){ if(transitionIndex == endIndex){ callback(); }else{ transitionIndex++; } }); } waitOnTransition('#elemID',3,function(){ //do stuff });
你也可以用咖喱做
function makeTransitionEnd(endIndex){ var endIndex = endIndex; var out = function(elem,callback){ var transitionIndex = 0; $(elem).on('webkitTransitionEnd',function(){ if(transitionIndex == endIndex){ callback(); }else{ transitionIndex++; } }); }); return out; } //make curry var waitForThreeEnds = makeTransitionEnd(3); waitForThreeEnds('#elemID',function(){ //do stuff });