jQuery - 暂停&在悬停时重新启动间隔

时间:2014-09-29 09:11:36

标签: javascript jquery

对此有一些答案,但没有我真正理解的。

所以任何帮助都会很棒!

我的时间间隔

setInterval(function(){
   nextThumb.trigger("click");
   nextBanner();
   bannerLoop();
}, 1500);

清除间隔?

$('#thumbs, #banner').hover(function(){
   clearInterval();
});

所以当我将鼠标悬停在#thumbs或#banner上时,我希望我的间隔暂停。当我的鼠标离开时,我希望它从它停止的地方恢复。

谢谢你的时间!

3 个答案:

答案 0 :(得分:3)

您需要将setInterval来电分配给某个变量:

var myInterval = setInterval(function(){
...

然后将其传递给clearInterval函数:

clearInterval( myInterval );

要重新恢复,您需要创建新的setInterval,并在您的范围内显示已分配的myInterval变量。

所以你的代码应该是:

var myInterval;

function createInterval() {
   myInterval = setInterval(function(){
      nextThumb.trigger("click");
      nextBanner();
      bannerLoop();
   }, 1500);
}

createInterval();

$('#thumbs, #banner').hover(function(){
   clearInterval(myInterval);
}, function() {
   createInterval();
});

答案 1 :(得分:1)

clearInterval() 暂停一个间隔;它清除它。您需要恢复悬停意图内的间隔。如果您使用匿名函数,这一点尤其棘手,因此您最好按照以下方式重构代码:

var intveral = 1500;

function intervalCall()
{
   nextThumb.trigger("click");
   nextBanner();
   bannerLoop();
}

var myInt = setInterval(intervalCalll, interval);

$('#thumbs, #banner').hover(function(){
   clearInterval(myInt);
}, function() {  
    myInt = setInterval(intervalCalll, interval);
});

答案 2 :(得分:0)

首先,创建两个函数来启动和停止间隔,并跟踪间隔ID:

var intervalID;
function startInterval() {
    stopInterval();
    intervalID = setInterval(function(){
        nextThumb.trigger("click");
        nextBanner();
        bannerLoop();
    }, 1500);
}

function stopInterval() {
    if (intervalID)
        clearInterval(intervalID);
    intervalID = null;
}

然后,您希望在鼠标悬停时停止间隔并在鼠标滑出时重新启动它:

$('#thumbs, #banner').hover(stopInterval, startInterval);

最后,最初开始间隔:

startInterval();