JQuery无限循环遍历.each迭代,每次迭代之间有一个暂停

时间:2011-10-07 13:03:11

标签: jquery each

基本上我正在通过推文进行循环播放。我想在每条推文之间暂停20秒,在最后一条推文之后,我想回到推文,然后无限重复这个过程。

到目前为止,这是我的代码,我已经尝试通过阅读其他人的例子来解决这个问题,但似乎无法解决问题。我也会继续遇到设置超时功能。

// DisplayTweets.
function displayTweets(tweets)
{
    // Checks if any tweets exist.
    if ($.isArray(tweets) !== false)
    {
        // Show error message.
        $('p#tweet').text(tweets);
    }
    else
    {   
        // Parse JSON into Javascript object.
        var objTweets = jQuery.parseJSON(tweets);

        // Loop through 
        $.each(objTweets, function(i, objTweet) {
            //alert(objTweet.tweet);
            $('p#tweet').text(objTweet.tweet);
        }); 
    }
}

2 个答案:

答案 0 :(得分:4)

只需编写一个要使用值数组调用的函数:

function displayTweets(arr){
    $('p#tweet').html(arr[0]);
    var i = 1;
    setInterval(
        function(){
            $('p#tweet').html(arr[i]);
            i++;
            if(i >= tweets.length) i = 0;
        },20000);
}

这是一个实例,时间缩短为2秒,用于演示目的:http://jsfiddle.net/tjAa6/

答案 1 :(得分:2)

我不会使用$.each因为您必须在循环中暂停(可能是delay()?); setTimeout可能是执行此操作的最佳方法:只需使用回调函数递归调用show next tweet函数。

showTweet(0);

function showTweet(idx)
{
    $("p#tweet").text(objTweets[idx].tweet);
    setTimeout(function () { showTweet((idx + 1) % objTweets.length); }, 20000);
}