jQuery Tablesorter - пользовательский парсер не работает

StackOverflow https://stackoverflow.com/questions/1424680

  •  07-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь написать собственный анализатор для плагина jQuery, Tablesorter . Идея состоит в том, чтобы сортировать числа в порядке убывания по первому щелчку.

Однако, когда я сортирую таблицу, порядок не меняется. Иногда несколько рядов двигаются, но большинство из них остаются прежними. Вот код:

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

Другие парсеры, которые я написал, работают нормально. Я попытался 9999 минус число вместо 1,0, деленное на него, на случай, если это будет проблемой с плавающей точкой (не повезло).

Это было полезно?

Решение

Я нашел решение. У меня было несколько пустых ячеек в каждом столбце, которые анализировались как «NaN». Почему это испортило порядок, я не знаю (пустые ячейки были периодически расставлены с обычными числами, не было порядка ни к чему).

Короче говоря, этот код работает для функции форматирования:

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

Другие советы

Чтобы отсортировать что-либо в обратном числовом порядке, для меня естественным способом является умножение на -1, а не на методы, которые вы пробовали.

Что касается самого синтаксического анализатора, единственное отличие, которое я заметил, заключается в том, что вы возвращаете фактическое число, тогда как пример парсера на сайте Tablesorter возвращает строку. Возможно, преобразование значения обратно в строку перед его возвратом будет работать?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top