这个js可以工作,但过了一段时间它会崩溃任何打开的浏览器。我必须关闭一些循环吗?
我还想将幻灯片效果更改为淡入/淡出(只是替换.slideDown不会这样做)。想法?
function ticker() {
$('#jsTicker li:first').slideUp(function() {
$(this).appendTo($('#jsTicker')).slideDown(1500);
});
}
setInterval(ticker, 6000);
答案 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);