使jquery脚本1.5.2与函数兼容

时间:2011-12-19 19:51:31

标签: javascript jquery jquery-deferred

我需要做这个功能

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

进入与jquery 1.5兼容的函数。

我一直在尝试,但无法让它发挥作用。有人可以帮我吗?

@Edit:我在这里进行了设置http://jsfiddle.net/u4hWf/。正如你所看到的,使用jquery 1.5.2会发生奇怪的视觉事件,而不是jquery 1.6.x如果有人可以看一下那将是非常棒的

1 个答案:

答案 0 :(得分:2)

你不会像延迟风格的代码那样做任何美丽的东西。我强烈建议您升级jQuery的版本。

一旦两个异步代码完成,此代码只运行一位代码。鉴于它们具有相同的持续时间,您可以简单地将代码延迟一段时间:

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

这是一种快速且(略微)hackish的方法。另一种方法是运行一个只在完成正确数量的函数时才执行一些代码的函数。

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行为,并且更具可扩展性。