即使setTimeout设置为10秒,jQuery标题旋转太快

时间:2012-02-09 20:16:33

标签: javascript jquery banner image-rotation

我为我创建的http://sandbox.worldwatchlist.us网站创建了一个简单的旋转横幅。

一切正常,直到我在浏览器中找到另一个标签然后几秒钟后回来......横幅每0.5秒或更短时间旋转一次。

我不知道为什么会发生这种情况,特别是因为我在javascript中使用setTimeout并将其设置为10秒(10000毫秒)。

以下是服务器上banner.js文件中的所有代码。请指出任何可以解决这个问题的方法。您可以查看上面的网站,或者查看我在http://www.youtube.com/watch?v=HWb2uc6KpFM拍摄的视频截图。每个浏览器都有我测试过的问题。

我到处寻找“jquery banner旋转得太快”的答案,除了“使用setTimeout”之外没有解决我问题的答案。

var banner_width = 960;
var default_pos = 0;
var current_pos = 0;
var next_pos;
var speed = 500;
var banner_tot; //number of banners
var current_num = 1; //current banner number

    $(function(){

        banner_tot = $(".banner_item").length;
        $(".banner_slider").css({width:(banner_tot*banner_width)});

        setTimeout( "slide()", 10000 );
    });


    function slide(){
        if(current_num==(banner_tot)){
            next_pos= 0;
            $(".banner_slider").animate({left: next_pos}, speed);
            current_num=1;

            setTimeout( "slide()", 10000 );
        }
        else{
            next_pos= current_num*(-banner_width);
            $(".banner_slider").animate({left: next_pos}, speed);
            current_num++;

            setTimeout( "slide()", 10000 );
        }
    }

1 个答案:

答案 0 :(得分:5)

你目睹的是动画的积累。当您切换到浏览器中的其他选项卡时,动画会被放入队列中,当您切换回原始选项卡时,所有这些都会按顺序播放。

看看http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup 了解更多信息。