0

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.fxTween.prototype.init; & jQuery.fx.step{};

所以它不能工作...

我对每个提示都看得更远!

4

0 回答 0