2010-06-12 66 views
3

因此,我在AJAX調用之後附加以下內容,並且此AJAX調用可能會發生幾次,返回多個數據項。我試圖使用Tinysort [http://plugins.jquery.com/project/TinySort]每次對列表進行排序,因此添加的新項目很好地集成並按字母順序排序。按字母順序排序內容

它不幸似乎沒有工作。有任何想法嗎?我的意思是,數據本身被正確追加,但不幸的是排序沒有發生。

var artists = []; 

$.each(data.artists, function(k, v) { 
artists.push('<section id="artist:' + v.name + '" class="artist"><div class="span-9"><img alt="' + v.name + '" width="34" height="34" class="photo" src="' + v.photo + '" /><strong>' + v.name + '</strong><br/><span>' + v.events + ' upcoming gig'); 

if (v.events != 1) { 
    artists.push('s'); 
} 

artists.push('</span></div><div class="span-2 align-right last">Last</div><div class="clear"></div></section>'); 
}); 

$('div.artists p').remove(); 
$('div.artists div.next').remove(); 
$('div.artists').append(artists.join('')).append('<div class="next"><a href="#">Next</a></div>'); 
$('div.artists section').tsort('section[id]', {orderby: 'id'}); 

謝謝!

回答

1

我建議在服務器端對數據進行排序。不確定你的數據源是什麼,但在大多數情況下,將邏輯移動到服務器應該更容易。

在Javascript中進行排序時,如果數據中包含非ASCII字符(某些瀏覽器可以對這些數據進行排序而某些瀏覽器不能排序),則可能會在不同的瀏覽器中遇到問題。這導致了瀏覽器之間的不同行爲,這並不像我想的那樣。

+0

良好的通話。決定切換到服務器端,制定了一些防止這種情況發生並現在這樣做的問題。就像你說的那樣,我認爲從長遠來看更容易。謝謝! – James 2010-06-12 14:32:57

+0

我很高興這對你有所幫助。我認爲它更容易,也免除了跨瀏覽器問題,如js實現中的不同字符串比較方法。我前段時間很難重新實現受到事實影響的所有邏輯,例如Opera無法正確排序非ascii字符的字符串。乾杯! – dzida 2010-06-13 19:07:08