Anonymous function in setTimeout not working

I am trying to create a delay between two cycles of the nivo slider.

Without setTimeout everything works fine (but without delay). So the following example:

 $('#slider').nivoSlider({ lastSlide: function(){ $('#slider').data('nivo:vars').stop = true; // setTimeout(function() { $('#slider').data('nivo:vars').stop = false; // }, 2000); }, }); 

If I uncomment the setTimeout lines, does the slider stop but not start again? Any ideas why?

Update: http://jsfiddle.net/kgYNX/

Second update: I tried this with the wrap function. The function is called, but if I use setTimeout in the new function, it stops working: http://jsfiddle.net/kgYNX/1/

+4
source share
2 answers

Solved a little different:

 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); } 

I don't know why "totalSlides-2", but it works: http://jsfiddle.net/kgYNX/15/

+1
source

Alternatively, you can add a custom option for the vars slider collection to prevent the lastSlide handler from stopping when the slider is turned on again with a timeout:

 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; } 
0
source

All Articles