2010-04-21 190 views
1

我该如何设置多个超时?
请帮我...jQuery循环插件

timeout:'1000, 2000, 3000'这是行不通的。

+0

Nick Craver在这里有一个很好的相关问题的答案:http://stackoverflow.com/a/3075104/538962 – mg1075 2012-07-14 19:33:25

回答

2

而不是使用timeout属性,您应该使用timeoutFn并定义一个函数返回等待下一张幻灯片的毫秒数。

例如,如果您只有3张幻灯片,并且希望使用3次超时(1000,2000,3000),那么我假设在最后一次超时后,您要再次使用第一次超时(每张图片都有时间停留在屏幕上)。因此,在这种情况下,代码将仅仅是:

$('#s1').cycle({ 
    timeoutFn: function (curr, next, opts, isForward) { 
     return (opts.currSlide + 1) * 1000; 
    } 
}); 

在另一方面,如果你想设置3页以上的幻灯片,那么你可以使用自己的属性(如数组和计数器),并利用它们在函数内部计算出相应的超时:

$('#s1').cycle({ 
    timeoutFn: function(currElement, nextElement, opts, isForward) { 
     opts.myTimeoutCount = (opts.myTimeoutCount + 1) % opts.myTimeouts.length; 
     return opts.myTimeouts[opts.myTimeoutCount]; 
    }, 
    myTimeouts: [1000, 2000, 3000], 
    myTimeoutCount: 0 
}); 

,最后,如果不想显示最后的超时后的任何其他幻灯片,那么你只需要使用autostop & autostopCount性质:

$('#s1').cycle({ 
    autostop: true, 
    autostopCount: 3, 
    timeoutFn: function (curr, next, opts, isForward) { 
     return (opts.currSlide + 1) * 1000; 
    } 
});