与hover和setInterval相关的问题

时间:2011-08-18 21:22:34

标签: jquery setinterval

我使用悬停功能,在鼠标悬停时,setInterval函数开始工作 和onmouseout我清除setInterval函数

我的代码如下:

---- ----修订 对于slideShow,我有一个div名称divForImages和i .append()在该特定div中的新图像。我使用.append()函数。 我的算法非常简单: FadeOut上一个图像和.append()使用Fadein函数新图像。 所以新的更新版本是:

var IntervalID;    

$("li").hover(
            function() {                                                        
                    IntervalID = setInterval(function() {
                                    //a slideshow begins to auto play...

                        $(".divForImages img").fadeOut(1000); //previous image

                        var item = $('<img src="'+attribute_of_href+'"   width="200" height="100" style="left:0px;top:0px;position:absolute"  />').css({"display":"none"}); //new image that is going to be faded in
                       $(".divForImages").append(item);/* new */

                       item.fadeIn(1000);
                                    }, 4000);
                       },
            function() {                
                    clearInterval(IntervalID);
                        });

我定义的毫秒是4000。 问题是当我 FIRST mousover li时,幻灯片显示不会开始 立即自动播放,但等待4秒!

当然,我已将时间定义为4000秒

当我鼠标悬停而不等待4000毫秒时,我可以让setInterval立即启动 吗?

先谢谢

3 个答案:

答案 0 :(得分:1)

试试这个:

function playSlideShow() {
    //a slideshow begins to auto play...
}

$("li").hover(
    function() {    
            playSlideShow();    // start playing immediately        
            IntervalID = setInterval(playSlideShow, 4000);
    },
    function() {                
            clearInterval(IntervalID);
    });

答案 1 :(得分:0)

您需要使用settimeout代替setinterval

了解详情检查setinterval vs settimeout

答案 2 :(得分:0)

当然,只需命名该函数,立即调用它,并让它按名称返回setInterval()

var IntervalID;
var slideshow = function () {
        //a slideshow begins to auto play...
    return slideshow; // <-- the return value lets you invoke and pass it.
};

$("li").hover( function () {
    IntervalID = setInterval( slideshow(), 4000);
}, function () {
    clearInterval(IntervalID);
});

示例: http://jsfiddle.net/Hgwt8/