Можно ли просто изменить цикл для использования индекса (т.е. ДЛЯ вместо FOREACH)? Необходимо было бы циклично выполниться назад, конечно, т.е. количество 1 вниз для обнуления.
<th width=110 class=\"{sorter: 'digit'}\">Count</th>
Это решило проблему. Указание javascript обрабатывать значение как цифру сделало сортировку правильной. По-прежнему немного глупо, что числовые значения не проверяются в скрипте как числа. Но я думаю, что для этого есть более высокая цель.
Всем спасибо за ваше время и помощь
/ Fons
Можете ли вы также показать свой html? Tablesorter должен обнаруживать и обрабатывать числовую сортировку без каких-либо специальных параметров. Возможно ли, что ваши числовые значения окружены html? В этом случае вам может понадобиться специальный метод для извлечения значений из HTML.
Пример из указанной ссылки:
$(document).ready(function() {
// call the tablesorter plugin
$("table").tablesorter({
// define a custom text extraction function
textExtraction: function(node) {
// extract data from markup and return it
return node.childNodes[0].childNodes[0].innerHTML;
}
});
});
Похоже, вам нужно дополнить числа. Это объясняет, почему 8, 7 и 4 упорядочиваются перед 32 и 31.
Попробуйте следующее:
function padLeft(s,len,c){
c=c || '0';
while(s.length< len) s= c+s;
return s;
}
$("table").tablesorter({
textExtraction: function(node) {
return padLeft(node.innerHTML,2);
}
});
Используйте значение больше 2, если вам нужно отсортировать большие числа.
Можно попробовать и это:
$(document).ready(function() {
$("table").tablesorter({
// put other options here ...
textExtraction: function(node) {
return parseInt($(node).text());
}
});
});
... это рассматривает содержимое отсортированных ячеек как целые числа, после извлечения только текста.