jQuery 有animating
-event(不是:animated
)吗?类似的东西step
,但作为额外的方法/事件?
目前我在每个动画步骤函数中触发一个自定义事件:
$('.foo').animate({property: 'value'}, {
step: function(now, fx){
$(this).trigger('animating', [now, fx])
}
});
$('.foo').on('animating', function(e, now, fx){
// do what you want
});
我认为在野外肯定有更好的解决方案。有什么想法/方法吗?
更新
我写了一个(当然不是很棒的)特殊事件,是什么让处理这个问题更容易一些:
(function($){
var oldStep = $.fx.step._default;
jQuery.event.special.animating = { };
$.fx.step._default = function( fx ) {
$(fx.elem).trigger('animating', fx);
oldStep.apply( this, arguments );
};
}(jQuery));
这不适用于 jQuery 1.7+,因为 jQuery 的动画方法已更改,或者 step 函数不再可扩展($.fx.step 导致为空object
)。
jQuery.fx
指Tween.prototype.init;
&
jQuery.fx.step
到{};
所以它不能工作...
我对每个提示都看得更远!