4

nivo-sliderの2つのループの間に遅延を作成しようとしています。

すべてがなくて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/

2回目の更新:ラッピング機能も試してみました。関数は呼び出されますが、新しい関数でsetTimeoutを使用すると、機能しなくなります:http: //jsfiddle.net/kgYNX/1/

4

2 に答える 2

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/

于 2013-03-25T09:35:13.497 に答える
0

バリアントとして、スライダー変数コレクションにカスタムオプションを追加して、タイムアウトによってスライダーが再度有効になったときに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;
}
于 2013-03-25T09:53:26.187 に答える