我正在创建一个图像旋转器,可以很好地淡入淡出在两个图像之间循环。我正在使用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();