我正在尝试在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/
答案 0 :(得分: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/
答案 1 :(得分:0)
作为变体,您可以向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;
}