Как заставить jQuery Tablesorter сортировать по убыванию по умолчанию? - PullRequest
16 голосов
/ 23 октября 2009

Я не могу понять это. Этот вопрос также был задан здесь http://www.nabble.com/TableSorter-plugin---default-column-sort-DESC-instead--How--to25180761s27240.html#a25180761 без ответа.

Я пробовал

    $.tablesorter.defaults.sortInitialOrder = 'desc';

и изменение файла jquery.tablesorter.js по умолчанию на «desc», но это не работает. Когда я нажимаю на заголовки столбцов, первая сортировка все еще возрастает, поэтому пользователь должен щелкнуть дважды, чтобы убрать значения.

Как мне заставить Tablesorter сортировать по убыванию по умолчанию?

Ответы [ 3 ]

22 голосов
/ 17 мая 2011

Попробуйте последнюю версию с сайта TableSorter - похоже, это исправлено где-то между версиями 2.0.3 и 2.0.5.

<script type="text/javascript">
$(document).ready(function() 
    { 
        $("#theTable").tablesorter({ 
            sortInitialOrder: 'desc',
            sortList: [[3,1]] // etc.

    }); 
    } 
); 
</script>

... это работало с последней версией tableorter, но не с предыдущей, которую я имел. Надеюсь, это поможет!

15 голосов
/ 23 октября 2009

Похоже на ошибку в коде 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];

так, чтобы первоначальный порядок был переопределен, если применяется sortList.

Затем вы можете использовать параметр sortInitialOrder для TableSorter, чтобы установить порядок сортировки по умолчанию для первого столбца. Любое упорядочение, указанное в sortList, переопределит sortInitialOrder, предоставленный для всей таблицы.

Обратите внимание, что это относится к Tablesorter 2.0.

8 голосов
/ 16 сентября 2010

Просто используйте это, второй элемент в массиве - это порядок сортировки (0 = по возрастанию, 1 = по убыванию):

.tablesorter({ sortList: [[0, 1]] });
...