Pregunta

Estoy tratando de escribir un analizador personalizado para el complemento jQuery, Tablesorter . La idea es ordenar los números en orden descendente con el primer clic.

Sin embargo, cuando clasifico la tabla, el orden no cambia. A veces se mueven algunas filas, pero la mayoría de ellas se mantienen igual. Aquí está el código:

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

Los otros analizadores que he escrito funcionan bien. Intenté 9999 menos el número en lugar de 1.0 dividido por él, en caso de que fuera un problema con flotadores (sin suerte).

¿Fue útil?

Solución

Encontré una solución. Tenía algunas celdas vacías en cada columna, que se analizaban como "NaN". No sé por qué esto arruinó el orden (las celdas en blanco estaban intermitentemente espaciadas con números regulares, no había orden para nada).

En resumen, este código funciona para la función de formato:

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

Otros consejos

Para ordenar algo en orden numérico inverso, para mí, la forma natural de hacerlo es multiplicarlo por -1, en lugar de los métodos que has probado.

En cuanto al analizador en sí, la única diferencia que noto es que está devolviendo un número real, mientras que ejemplo de analizador en el sitio Tablesorter devuelve una cadena. ¿Quizás convertir el valor a cadena antes de devolverlo funcionaría?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top