0

次のコードを使用して、特定のハッシュ タグを含むツイートの単純なリストを取得しています。

$(document).ready(function tweetList() {
$.getJSON(
    'http://search.twitter.com/search.json?callback=?&rpp=20&q=web',
    function(data) {
        $.each(data, function(i, tweets) {
            for (var num = 0, len = tweets.length; num < len; num++) {
                if (tweets[num].text !== undefined) {
                    var tim = new Date(tweets[num].created_at);
                    var author = tweets[num].from_user;
                    $('ul#tweets').append('<li><b>' + tim.toString().substring(0, 24) + ':</b> ' + tweets[num].text + author + '</li>');   
                }
            }
        });
        setInterval(tweetList, 5000);
    }
);
});</script>

<ul id="tweets"></ul>

ご覧のとおり、リストを更新しようとしていますが、関数を更新すると、更新されたデータでリストが大きくなり続けるという問題があります。

これは、.append を使用しているためだとわかっていますが、.html を使用すると、ツイートのリスト全体が取り込まれません。

これを回避することは可能ですか?ありがとう。

4

3 に答える 3

1

古いツイートを削除したいと思いますが、すべてではありません。:

$('ul#tweets').html('')

更新する前にすべての古いツイートを削除しますが、これにより、任意の数のツイート(numToKeepで設定)を保持できます。

var numToKeep=10;
var currSize = $('ul#tweets li').size();
var extras = numToKeep - currSize;
$('ul#tweets li').each(function(count,el){
   if (count < numToKeep) {
      $(el).remove();
   }
});

カウントは0ベースなので、これにより古いツイートが削除されます。

于 2012-05-10T17:07:55.900 に答える
1

jQuery のempty()を使用する

$('#tweets').empty();
$.each(data, function(i, tweets) {
于 2012-05-10T17:08:59.377 に答える
1

新しいデータを挿入する前に、以前のデータを削除する必要があります。

$.each書く前に:

$('ul#tweets').html('');
于 2012-05-10T16:55:51.100 に答える