[英]Anonymous function in setTimeout not working
我試圖在nivo滑塊的兩個循環之間創建一個延遲。
沒有setTimeout
一切正常(但沒有延遲)。 所以下面的例子有效:
$('#slider').nivoSlider({
lastSlide: function(){
$('#slider').data('nivo:vars').stop = true;
// setTimeout(function() {
$('#slider').data('nivo:vars').stop = false;
// }, 2000);
},
});
如果取消注釋setTimeout-lines,滑塊會停止但不會再次啟動? 有什么想法嗎?
更新: http : //jsfiddle.net/kgYNX/
第二次更新:也用包裝功能試了一下。 該函數被調用,但如果我在新函數中使用setTimeout則停止工作: http : //jsfiddle.net/kgYNX/1/
解決它略有不同:
beforeChange: function(){
$('#slider').data('nivo:vars').stop = true;
var delay = 0;
if ($('#slider').data('nivo:vars').currentSlide == $('#slider').data('nivo:vars').totalSlides - 2) {
delay = 2000;
}
setTimeout(function() {
$('#slider').data('nivo:vars').stop = false;
}, delay);
}
我不知道為什么“totalSlides - 2”,但它有效: http : //jsfiddle.net/kgYNX/15/
作為變體,您可以向slider vars集合添加自定義選項,以防止在超時重新啟用滑塊時在lastSlide處理程序上停止執行:
lastSlide: function () {
var dontStop = $('#slider').data('nivo:vars').dontStopOnLast;
if (!dontStop) {
$('#slider').data("nivoslider").stop();
setTimeout(function () {
$('#slider').data("nivoslider").start();
}, 2000);
}
$('#slider').data('nivo:vars').dontStopOnLast = !dontStop;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.