我有一个用SwipeJS构建的图像轮播,当我从肖像改变方向时,我会销毁然后重建 - >风景或风景 - >的画像。
我有一个问题,我似乎无法使用下面的代码清除间隔/超时。正如我所看到的那样console.log(now)
开始于每隔5秒被调用一次(如预期的那样)每2.5秒被调用一次。大概这是因为初始setInterval
功能仍然有效。
如何清除/杀死它,以便一次只能有一个间隔工作?
我正在使用jQuery Mobile 1.3.1。
if ($.event.special.orientationchange.orientation() === 'portrait') {
// Portrait mode
clearTimeout(slideshowHandle);
// ...trash the old slider, then build a new one...
} else {
// Landscape mode
clearTimeout(slideshowHandle);
// ...trash the old slider, then build a new one...
}
// call the SwipeJS next method every 5 seconds to move to the next slide in the carousel
var slideshowHandle = setInterval(function() {
// just some code for debugging purposes
var now = new Date(),
now = now.getHours()+':'+now.getMinutes()+':'+now.getSeconds();
console.log(now);
// trigger a swipe 'next'
container.Swipe('next');
}, 5000);
答案 0 :(得分:2)
您应该使用clearInterval(slideshowHandle)
代替clearTimout
选中此项以获取参考https://developer.mozilla.org/en-US/docs/Web/API/Window.clearInterval
答案 1 :(得分:1)
我必须遇到一个范围问题,因为将其附加到window
完成了诀窍(并且还要更改回clearInterval
):
// clear the interval on the slideshow 'next' (if we have it) when changing orientation
if (window.slideshowHandle) {
window.clearInterval(window.slideshowHandle);
}
// call the SwipeJS next method every 5 seconds to move to the next slide in the carousel
window.slideshowHandle = window.setInterval(function() {
swipeContainer.Swipe('next');
}, 5000);