清除间隔

时间:2011-12-12 10:48:53

标签: jquery setinterval clearinterval

有一个定制的滑块,我想在悬停时停止。我试图清除并设置悬停间隔,但不能正常工作。它只在我第一次悬停在它上面时停止然后如果我将鼠标移出并再次移动它就不会停止。

这是我的代码:

    var itvl = null;

    itvl = window.setInterval(function(){scroll_()},3000);

    function scroll_() {
        if ($('#carousel_ul li').length > 1) {
            $("#right_scroll").click();
        }
    }

    $('#carousel_ul li').hover(function() {
        window.clearInterval(itvl);    
    }, function() {
        window.setInterval(function(){scroll_()},3000);
    });

知道我做错了什么吗?

提前致谢

莫罗

3 个答案:

答案 0 :(得分:2)

当您在悬停时设置间隔时,您没有设置itvl。 itvl实际上是一个整数,充当间隔的引用。因此,当您执行window.setInterval(function(){scroll_()},3000);时,参考会发生变化,而不会将其更改为任何内容。

请改为尝试:

$('#carousel_ul li').hover(function() {
    window.clearInterval(itvl);    
}, function() {
    itvl = window.setInterval(function(){scroll_()},3000);
});

答案 1 :(得分:1)

$('#carousel_ul li').hover(function() {
    window.clearInterval(itvl);    
}, function() {
    itvl = window.setInterval(function(){scroll_()},3000);
});

答案 2 :(得分:0)

您可以使用布尔变量而不是clearInterval:

    var scrolling= true;    
    window.setInterval(scroll_,3000);    
    function scroll_() {
        if(scrolling) {
            if ($('#carousel_ul li').length > 1) {
               $("#right_scroll").click();
            }
        }
    }    
    $('#carousel_ul li').hover(function() {
        scrolling = false;    
    }, function() {
        scrolling = true;
    });