1

我正在为类似手风琴的幻灯片放映开发 jQuery 系统,问题是当我尝试为此创建自动幻灯片时,我有:

for (i=1;i<=5;i++)  { setInterval(acordeon(i),2000) }

有了这个我在循环内调用函数 acordeon(i) 每 2000 毫秒执行一次,问题是它没有执行所有

函数参数是要显示的 div 的 id,例如,如果我有 5 个 div 要设置动画,我只需要使用正确的 id 调用此函数,它的动画效果就很好,当我尝试对此进行动画处理时问题就来了:我需要先执行acordeon(1)然后acordeon(2)..... 3 , 4 最后acordeon(5)

我尝试了不同的方法,但它只在我生成随机整数并调用时才有效setInterval

好的,谢谢我希望的一切 - 当然 - :) 你可以帮助我,问候

4

4 回答 4

1

您的问题可能是您将这些间隔“全部”设置在几毫秒内,因此所有 5 个间隔都在“同一时间”结束。尝试:

var divToAnimate = 1;

setInterval(function(){ 

    acordeon(divToAnimate);

    divToAnimate = (divToAnimate%5)+1;

},2000);

这样,您将每 2 秒调用一次手风琴,并使用不同的 i 进行动画处理,然后将其递增,但将其保持在 1-5 范围内

这是一个 jFiddle

于 2012-07-31T07:39:28.333 回答
0

这对我来说效果很好:

for (var i = 1; i < 10; i++) {
    $('#bullet-' + i).delay(i * 1000 - 1000).fadeIn('fast', function () {
        var id = this
        setTimeout (function () {$(id).css('color', 'lightgray');}, 1500);
    });
}
于 2012-11-24T19:38:37.357 回答
0

您需要将回调传递给 setInterval,而不是传递手风琴函数的返回值。在你的 for 循环中试试这个:

setInterval( function(){ acordeon(i) }, 2000 )
于 2012-07-31T07:29:24.220 回答
0

使用 jQuery.each()函数:

$(div).each(function(){ setInterval(acordeon($(this)),2000)});
于 2012-07-31T07:27:21.357 回答