簡體   English   中英

setTimeout中的匿名函數無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM