jQuery Tablesorter - пользовательский парсер не работает - PullRequest
2 голосов
/ 15 сентября 2009

Я пытаюсь написать собственный анализатор для плагина 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, деленное на него, на случай, если это будет проблемой с числами (не везет).

Ответы [ 2 ]

2 голосов
/ 15 сентября 2009

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

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

 format: function(s) {
  if ( s == '' )
   return 0;  
  return -parseInt( s.replace(/,/g,'') );
 }
0 голосов
/ 15 сентября 2009

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

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

...