Как заставить jQuery Tablesorter сортировать таблицы по убыванию по умолчанию?
-
06-07-2019 - |
Вопрос
Я не могу этого понять.Этот вопрос также был задан здесь http://www.nabble.com/TableSorter-plugin---default-column-sort-DESC-instead--How--to25180761s27240.html#a25180761 без ответа.
Я пытался
$.tablesorter.defaults.sortInitialOrder = 'desc';
и изменяем файл jquery.tablesorter.js по умолчанию на 'desc', но это не работает.Когда я нажимаю на заголовки столбцов, первая сортировка по-прежнему выполняется по возрастанию, поэтому пользователю приходится дважды щелкнуть, чтобы уменьшить значения.
Как я могу заставить Tablesorter сортировать по убыванию по умолчанию?
Решение
Похоже на ошибку в коде tablesorter, или я неправильно понимаю, что должен делать параметр sortInitialOrder.В строке 536 он устанавливает порядок сортировки, просматривая количество раз, когда столбец был отсортирован, и принимая значение mod 2.При этом также следует учитывать значение параметра sortInitialOrder.
Измените строку 536 с
this.order = this.count++ % 2;
Для
this.order = this.count++ == 0 ? this.order : (1 - this.order);
И добавьте после этой строки (чтобы при первом нажатии на другой столбец вы получили значение по умолчанию)
$headers.not($cell).each( function() {
this.count = 0;
});
и измените строку 421 с
o.count = s[1];
Для
o.order = o.count = s[1];
таким образом, начальный порядок переопределяется, если применяется список сортировки.
Затем вы можете использовать параметр sortInitialOrder для tablesorter, чтобы настроить первый порядок сортировки по умолчанию для столбца.Любой порядок, указанный в sortList, переопределит sortInitialOrder, указанный для всей таблицы.
Обратите внимание, что это относится к Tablesorter 2.0.
Другие советы
Попробуйте последнюю версию с сайта TableSorter - похоже, это исправлено где-то между версиями 2.0.3 и 2.0.5. Р>
<script type="text/javascript">
$(document).ready(function()
{
$("#theTable").tablesorter({
sortInitialOrder: 'desc',
sortList: [[3,1]] // etc.
});
}
);
</script>
... это работало с последней версией TableSorter, но не с предыдущей версией, которую я имел. Надеюсь, это поможет!
Просто используйте это, второй элемент в массиве - это порядок сортировки (0 = по возрастанию, 1 = по убыванию):
.tablesorter({ sortList: [[0, 1]] });