javascript - jQuery 旋转器旋转不正确 - 太多递归

标签 javascript jquery css

我构建了一个自定义 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/

相关文章:

javascript - 如何创建整个 <li> 可点击,然后在鼠标悬停时在顶部显示框?

html - 居中 div,边距 : 0 auto; not working

javafx "setstyle"一次又一次的会丢失之前设置的样式

javascript - 在 visualforce 中从 javascript 调用 Controller 方法

javascript - 使用 JavaScript 对象的值创建 JavaScript 数组

jQuery UI 自动完成从 json 文件中获取数据

html - 导航菜单未正确下拉

javascript - 在 Parent 和 Grandchildren Vue 2 之间使用同步修饰符

javascript - Vue 用 [] 括号打印我的数组,为什么?

不会取代 javascript 的 java 框架