【发布时间】:2013-12-01 23:55:09
【问题描述】:
我正在尝试使用setInterval 来启动、停止和重新启动定时滑块。滑块 1) 淡出/淡入幻灯片,2) 转换滑块底部的寻呼机按钮。我的代码如下:
var sliderEl = $('div.slider-container'),
pagerNav = $('div.slider-container div.pager-container nav.pager'),
slidePosition = 1,
slideCount = sliderEl.find('img.slide').length,
sliderInt;
var slider = function(status){
var nextSlide = function(){
pagerNav.find('button.slide-select').removeClass('selected');
sliderEl.find('div.slides div.slide').fadeOut(300);
if(slidePosition === slideCount){
pagerNav.find('button.slide-select[id=p0]').addClass('selected');
sliderEl.find('div.slides div.slide[id=s0]').fadeIn(300);
slidePosition = 1;
} else {
sliderEl.find('div.slides div.slide[id=s'+slidePosition+']').fadeIn(300);
pagerNav.find('button.slide-select[id=p'+slidePosition+']').addClass('selected');
slidePosition++;
}
}
if(status === 'start') {
sliderInt = setInterval(nextSlide, 2000);
} else if(status === 'next') {
nextSlide();
}
sliderEl.find('div.slider').hover(function(){
clearInterval(sliderInt);
sliderEl.find('button.slide-next').on('click',function(){
slider('next');
});
},function() {
slider('start');
});
}
slider('start');
滑块启动,setInterval 工作正常;我遇到的问题是当我将鼠标悬停在幻灯片上以“暂停”它(这也有效)然后我将鼠标移开以再次启动它...滑块间隔加倍并开始以两倍的速度跳到下一张幻灯片速度。
有人可以帮忙吗?
【问题讨论】:
-
在调用
clearInterval(sliderInt)之前,你能不能先做一个console.log(sliderInt)看看对象是否真的被分配了? -
很奇怪,当我这样做时,它输出了一个 15 到 30 之间的随机数,然后当我将鼠标移出并重新插入时,它做了同样的事情,但 X2。这是为什么呢?
-
sliderInt返回了一个数字?它应该返回对区间的引用,不是吗?我认为这是一条空白线索,但是如果您改为调用window.setInterval()和window.clearInterval(),它的行为会有所不同吗?
标签: jquery slider setinterval