2010-06-12 6 views
3

Donc, j'ajoute ce qui suit après un appel AJAX, et cet appel AJAX peut arriver plusieurs fois, renvoyant plusieurs éléments de données. Et j'essaie d'utiliser Tinysort [http://plugins.jquery.com/project/TinySort] pour trier la liste à chaque fois, donc les nouveaux éléments ajoutés sont bien intégrés et triés par ordre alphabétique.Trier le contenu par ordre alphabétique

Malheureusement, cela ne semble pas fonctionner. Des idées? Je veux dire, les données elles-mêmes sont correctement ajoutées, mais malheureusement le tri n'a pas lieu.

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'}); 

Merci!

Répondre

1

Je suggère de trier les données côté serveur. Vous ne savez pas quelle est votre source de données, mais dans la plupart des cas, il devrait être beaucoup plus facile de déplacer la logique de tri vers le serveur. Avec le tri en Javascript, vous pouvez rencontrer des problèmes dans différents navigateurs lorsque vos données contiennent des caractères non-ascii (certains navigateurs peuvent trier ces données et d'autres non). Cela conduit à un comportement différent entre les navigateurs qui n'est pas prévu comme je le pense.

+0

Bon appel. Décidé d'opter pour le côté serveur, j'ai résolu quelques problèmes qui empêchaient cela de se produire et de le faire de cette façon. Je suppose que c'est plus facile à long terme, comme vous le dites. Merci! – James

+0

Je suis content que cela vous a aidé. C'est plus facile je pense et aussi il est libre de problèmes de cross-navigateurs comme des méthodes de comparaison de chaînes différentes dans les implémentations de js. J'ai eu du mal il y a quelque temps à réimplémenter TOUTES les logiques affectées par le fait que par ex. Opera ne pouvait pas trier correctement les chaînes avec des caractères non ascii. À votre santé! – dzida

Questions connexes