2013-02-01 45 views
0

我有一個複選框的形式,讓用戶選擇一個或多個Twitter時間軸來顯示。目前,時間線分批顯示(即第一個時間線的所有推文,第二個時間線的所有推文,以此類推)。我想在輸出之前將所收集的所有推文分類到單個年表中。如何在輸出到屏幕之前按時間順序排序多個twitter時間軸?

這裏是一個JS提琴:http://jsfiddle.net/brianeoneill/z9cuP/2/

$('input[type=submit]').on('click', function(e){ 

    // prevent default behavior of the submit button 
    e.preventDefault(); 

    // empty the div with ID of tweets 
    $('#tweets').empty(); 

    // perform a function on all of the checked boxes 
    $(':checkbox:checked').each(function(){ 

    var twitterID = $(this).attr('data'); 

    // use the "data" attribute to build the query string for getJSON 
    $.getJSON('http://api.twitter.com/1/statuses/user_timeline/'+twitterID+'.json?callback=?', null, function(data){ 

    // create an empty ul 
    var tweetList = $('<ul id="tweets-list">'); 

    // for each JSON object returned, parse it into an li 
    $.each(data, function(i, tweet){ 
     var item = $('<li class="'+i+'">'); 
     var name = $('<h2>').text(tweet.user.name); 
     var date = $('<small>').text(tweet.created_at); 
     var img = $('<img>').attr('src', tweet.user.profile_image_url); 
     var msg = $('<p>').text(tweet.text); 
     item.append(img,name,date,msg); 

     // add the li to the empty tweetList ul 
     tweetList.append(item); 

    }); // end of JSON parse function 

    // SORT BEFORE SENDING TO DOM 

    $('#tweets').append(tweetList); 

我試着創造裏的數組,然後通過Twitter的時間戳對它們進行排序,但我總是一個空數組結束。很顯然,我錯過了一些東西。

在此先感謝!

回答

2

提示:所有推特ID都按時間順序上升。無論Tweet的來源是誰的時間表,甚至可以是混合的時間表,如果您按照他們的ID來排列推文,則可以按照時間順序進行排序。

+0

好的。在我的$ .each函數中,我添加了:var item = $('li class =「'+ this.id +'」>');這工作正常。所以現在我只需要通過ID對li進行排序。輸出到屏幕之前可以這樣做嗎?或輸出,然後使用jQuery進行排序? –

+0

我會採取一種稍微不同的方法:將所有Tweets存儲在一個'Array'中,然後使用'Array.sort'和一個用戶函數按Tweet ID進行排序,然後遍歷該數組並呈現內容。在這裏你可以找到關於如何使用'Array.sort'和比較函數的文檔:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort – marekful

+0

謝謝,Marcell!我真的很感謝你的幫助 –

相關問題