使jquery脚本1.5.2兼容when函数

Make jquery script 1.5.2 compatible with when function

本文关键字:兼容 when 函数 jquery 脚本      更新时间:2023-09-26

我需要让这个函数

$.when(
    self.image.fadeOut(self.options.animationSpeed),
    self.aniImg.eq(0).fadeIn(self.options.animationSpeed)
).done(function () {
    self.finishAnimating(data);
});

变成一个与jquery 1.5兼容的函数

我一直在尝试,但是不能让它工作。有谁能帮我一下吗?

@编辑:我在这里设置了http://jsfiddle.net/u4hWf/。正如您所看到的,在jquery 1.5.2中会出现一些奇怪的视觉效果,而在jquery 1.6中则不会。如果有人能看一下,那就太棒了

你不会做出像Deferred样式那样漂亮的代码。我强烈建议您考虑升级jQuery的版本。

这段代码只是在两个异步代码完成后运行一个代码位。假设它们具有相同的持续时间,您可以简单地将代码延迟相应的时间:

self.image.fadeOut(self.options.animationSpeed);
self.aniImg.eq(0).fadeIn(self.options.animationSpeed);
setTimeout(function() {
    self.finishAnimating(data);
}, self.options.animationSpeed);

这是一种快速而(稍微)粗俗的方法。另一种方法是运行一个函数,它只在正确数量的函数完成后执行一小段代码。

var ticks = 0;
function tick() {
    if (++ticks === 2) { // number of animations
        self.finishAnimating(data);
    }
}
self.image.fadeOut(self.options.animationSpeed, tick);
self.aniImg.eq(0).fadeIn(self.options.animationSpeed, tick);

这更冗长,也不是很漂亮,但它更精确地复制了$.when的行为,并且更具可扩展性。