重构jQuery淡出并阻止它崩溃浏览器

时间:2013-07-19 18:18:33

标签: javascript jquery

这个js可以工作,但过了一段时间它会崩溃任何打开的浏览器。我必须关闭一些循环吗?

我还想将幻灯片效果更改为淡入/淡出(只是替换.slideDown不会这样做)。想法?

function ticker() {
    $('#jsTicker li:first').slideUp(function() {
        $(this).appendTo($('#jsTicker')).slideDown(1500);
    });
}
setInterval(ticker, 6000);

http://jsfiddle.net/KevinOrin/Zh3wU/

2 个答案:

答案 0 :(得分:1)

setInterval基本上是一个无限循环。

您的当前功能不会等待幻灯片重新开始之前完成。

请使用setTimeout代替:

(function() {
    var tickerTimer;
    function ticker() {
        clearTimeout(tickerTimer);
        $('#jsTicker li:first').slideUp(function() {
            $(this).appendTo($('#jsTicker')).slideDown(1500, function(){
                tickerTimer = setTimeout(ticker, 6000);
            });
        });   
    }
    tickerTimer = setTimeout(ticker, 6000);
})();

答案 1 :(得分:0)

请勿使用setInterval()。您没有考虑动画的异步行为。

使用setTimeout()

尝试使用以下内容
function ticker() {
    $('#jsTicker li:first').slideUp(function() {
        $(this).appendTo($('#jsTicker')).slideDown(1500, function() {
            setTimeout(ticker, 4500);
        });
    });
}
setTimeout(ticker, 6000);