2010-04-21 232 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; 
    } 
});