我构建了一个自定义 jQuery 旋转器,仅使用基本动画来旋转 3 个 Div(图像)。我已经构建了该函数,然后使用它作为回调重新启动该函数。这是代码:
function ImageRotate() { var CurrentFeature = "#container" + featureNumber; $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); var featureNumber2 = featureNumber-1; if ( featureNumber == 1) {featureNumber2=3} var CurrentFeature2 = "#container" + featureNumber2; $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '0px'}, 3000); $('#container2').stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); var featureNumber3 = featureNumber+1; if ( featureNumber == 3){featureNumber3=1} var CurrentFeature3 = "#container" + featureNumber3; $(CurrentFeature3).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); $(CurrentFeature2).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); $(CurrentFeature).stop(false, true).delay(4500).animate({'top' : '-330px'}, 25); if (featureNumber ==1) {featureNumber=3} else{featureNumber--}; $(CurrentFeature).stop(false, true).delay(7500).animate({'top' : '0px'}, 3000); $(CurrentFeature3).stop(false, true).delay(4500).animate({'top' : '330px'}, 3000); $(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,ImageRotate()); };
值得注意的是,再次调用该函数时,我还尝试创建另一个名为 ImageRotate2() 的函数;它做了同样的事情。它循环播放,但我觉得很有趣。
编辑:我也在回复中尝试了一些答案,但它们都让我每秒都出现递归错误。
最佳答案
要么传入函数(当你在它后面加上括号时,它实际上是在当时调用它而不传递对它的引用)或者将它嵌套在函数定义中,如下所示:
$(CurrentFeature2).stop(false, false).delay(4500).animate({'top' : '-330px'}, 25,function {ImageRotate()});
编辑:
与其调用该函数,不如尝试使用 setTimeout 将其排队:
..., function() { window.setTimeout(ImageRotate, 1000); });
关于javascript - jQuery 旋转器旋转不正确 - 太多递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692317/