Question

J'essaie d'écrire un analyseur personnalisé pour le plug-in jQuery, Tablesorter . L’idée est de trier les nombres par ordre décroissant au premier clic.

Cependant, lorsque je trie la table, l'ordre ne change pas. Parfois, quelques rangées se déplacent, mais la plupart d’entre elles restent inchangées. Voici le code:

$.tablesorter.addParser({
    id: 'desc',
    is: function(s) { return false },
    format: function(s) {
        return 1.0 / parseFloat( s.replace(/,/g,'') );
    },
    type: 'numeric'
});

Les autres analyseurs que j'ai écrits fonctionnent bien. J'ai essayé 9999 moins le nombre au lieu de 1,0 divisé par le nombre, au cas où il y aurait un problème de flotteurs (pas de chance).

Était-ce utile?

La solution

J'ai trouvé une solution. J'ai eu quelques cellules vides dans chaque colonne, qui ont été analysées comme "NaN". Pourquoi cela a-t-il foiré l'ordre, je ne sais pas (les cellules vierges étaient espacées de façon intermittente avec des numéros normaux, il n'y avait pas d'ordre à rien).

En bref, ce code fonctionne pour la fonction de formatage:

 format: function(s) {
  if ( s == '' )
   return 0;  
  return -parseInt( s.replace(/,/g,'') );
 }

Autres conseils

Pour trier quelque chose dans l'ordre numérique inverse, la meilleure solution consiste à le multiplier par -1 plutôt que par les méthodes que vous avez essayées.

En ce qui concerne l’analyseur lui-même, la seule différence que je remarque est que vous renvoyez un nombre réel, alors que exemple d'analyse sur le site Tablesorter renvoie une chaîne. Peut-être que reconvertir la valeur en chaîne avant de la renvoyer fonctionnerait?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top