1

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

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

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

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

4

2 回答 2

1

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

您当前的函数在重新开始之前不会等待 slideUp 完成。

试试这个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);
})();
于 2013-07-19T18:22:41.467 回答
0

不要使用setInterval(). 您没有考虑动画的异步行为。

尝试以下类似的方法,而不是使用setTimeout()

function ticker() {
    $('#jsTicker li:first').slideUp(function() {
        $(this).appendTo($('#jsTicker')).slideDown(1500, function() {
            setTimeout(ticker, 4500);
        });
    });
}
setTimeout(ticker, 6000);
于 2013-07-19T18:21:56.633 回答