jQuery Tablesorter - пользовательский парсер не работает
-
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 возвращает строку. Возможно, преобразование значения обратно в строку перед его возвратом будет работать?