如果用户没有将div悬停5秒,jQuery会执行操作

时间:2012-04-18 09:11:51

标签: jquery slider

我正在尝试制作图像滑块。现在,我得到了滑块的基本部分 - 唯一的是滑块每5秒自动显示一张新图片(已经构建了)但是一旦用户将滑块菜单悬停,5秒计时器就不会停止

这是我的滑码;

var index = $(this).parent("li").index();

        var item_y = $(this).parent("li").offset().top;
        var item_x = $(this).parent("li").offset().left;

        $("#slider li a").each(function(){
            $(this).removeClass("active");
            Cufon.refresh();
        });

        $(this).addClass("active");

        $("#slider_arrow").css({
            'top' : item_y,
            'left' : item_x-109
        });

        $("#slider_image li").hide().each(function(i,v){
            if (i == index) {
                $(this).fadeIn("medium");
            }
        });

        Cufon.refresh();

这实际上是 - 在悬停 - 动作。以下是每5秒钟发生一次的动作的代码。

setInterval(function(){

        var current_index = $("#slider li a.active").parent("li").index();

        var new_index = $("#slider li").eq((current_index+1));

        if (new_index.length > 0)
        {
            new_index.children("a").mouseover();
        }
        else
        {
            $("#slider li:first-child").children("a").mouseover();
        }

    }, 5000);

所以我想要的是在用户触摸#slider li菜单中的项目后立即重置5秒间隔。

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分:0)

您必须存储间隔句柄,以便在需要时调用clearInterval()

var myinterval = setInterval(
    ....
, 5000);

$('#slider li').mouseenter(function() {
    if(myinterval) clearInterval(myInterval);
};

答案 1 :(得分:0)

查看此答案,了解如何创建pause-able javascript timeout

它应该运作良好。