我正在创建一个图像旋转器,可以很好地淡入淡出在两个图像之间循环。我正在使用setInterval这样做-但出于性能原因,我想在调整浏览器大小时停止计时器。

首先,我定义函数和全局处理程序:

var imageRotator;
var getImageRotator = function() {
    if (imageRotator)
        clearInterval(imageRotator); // <-- not working it would seem?
    setInterval(function() {
        $('.imageRotator').animate({opacity: ($('.imageRotator').css("opacity") == 1) ? 0 : 1}, 500);
    }, 9000);
};


然后在$(document).ready()$(window).smartResize()中都执行:

imageRotator = getImageRotator();


它以9s的间隔启动它正常,但是每次我调整浏览器大小时,它都会添加一个新计时器,并且它会不停地开始淡入淡出。

我要去哪里错了?

最佳答案

您没有从getimageRotatorFunction()返回

var imageRotator;
var getImageRotator = function() {
    if (imageRotator)
        clearInterval(imageRotator); // <-- not working it would seem?
    return setInterval(function() {
        $('.imageRotator').animate({opacity: ($('.imageRotator').css("opacity") == 1) ? 0 : 1}, 500);
    }, 9000);
};


现在您可以简单地做到这一点

imageRotator = getImageRotator();

07-22 23:21