Domanda

Sto provando a scrivere un parser personalizzato per il plugin jQuery, Tablesorter . L'idea è di ordinare i numeri in ordine decrescente al primo clic.

Tuttavia, quando ordino la tabella, l'ordine non cambia. A volte alcune file si spostano, ma la maggior parte rimane la stessa. Ecco il codice:

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

Gli altri parser che ho scritto stanno funzionando bene. Ho provato 9999 meno il numero anziché 1,0 diviso per esso, nel caso in cui fosse un problema con i float (senza fortuna).

È stato utile?

Soluzione

Ho trovato una soluzione. Avevo alcune celle vuote in ogni colonna, che venivano analizzate come "NaN". Perché questo ha rovinato l'ordinamento, non lo so (le celle vuote sono state distanziate in modo intermittente con numeri regolari, non c'era ordine per nulla).

In breve, questo codice funziona per la funzione di formato:

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

Altri suggerimenti

Per ordinare qualcosa in ordine numerico inverso, per me il modo naturale di procedere è moltiplicarlo per -1, piuttosto che i metodi che hai provato.

Per quanto riguarda lo stesso parser, l'unica differenza che noto è che stai restituendo un numero effettivo, mentre esempio parser nel sito Tablesorter restituisce una stringa. Forse convertire il valore in stringa prima di restituirlo funzionerebbe?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top