2010-06-12 136 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