Tablesorter — это плагин для JavaScript-библиотеки jQuery, который позволяет сортировать HTML-таблицы, включающие теги thead и tbody, без перезагрузки страницы на стороне клиента. Tablesorter может анализировать и отсортировать различные типы данных, включая связанные данные в ячейке. Плагин имеет множество функций, включая:
- Сортировку по нескольким столбцам таблицы.
- Анализ сортируемых значений, в том числе URL-адресов, чисел, валют, IP-адресов, дат (в различных форматах), времени. Кроме того вы можете легко расширить этот функционал, добавив свои типы данных.
- Поддержка HTML-атрибутов
rowspanиcolspanвthэлементах таблицы. - Поддержка "скрытой" многокритериальной сортировки (например, выполняется первоначальная сортировка по одному из критериев, а затем по алфавиту внутри отсортированных групп).
- Расширяемость с помощью виджетов.
- Поддержка многими популярными браузерами: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+.
- Небольшой размер исходного кода (всего 12-13 КБ).
Подключение плагина
Для использования плагина необходимо включить файл библиотеки jQuery [8] и самого плагина с помощью тега script в заголовок (head) страницы:
<script type="text/javascript" src="jquery-latest.js"> </script> <script type="text/javascript" src="jquery.tablesorter.js"> </script>
Плагин Tablesorter работает со стандартными HTML-таблицами. Однако, существует одно ограничение — вы должны использовать в таблице теги thead и tbody:
<table id="myTable" class="tablesorter">
<thead>
<tr>
<th>Фамилия</th>
<th>Имя</th>
<th>E-mail</th>
<th>Долг</th>
<th>Веб-сайт</th>
</tr>
</thead>
<tbody>
<tr>
<td>Смит</td>
<td>Джон</td>
<td>jsmith@gmail.com</td>
<td>$50.00</td>
<td>http://www.jsmith.com</td>
</tr>
<tr>
<td>Бах</td>
<td>Франк</td>
<td>fbach@yahoo.com</td>
<td>$40.00</td>
<td>http://www.frank.com</td>
</tr>
<tr>
<td>Доу</td>
<td>Джейсон</td>
<td>jdoe@hotmail.com</td>
<td>$100.00</td>
<td>http://www.jdoe.com</td>
</tr>
<tr>
<td>Конвей</td>
<td>Тим</td>
<td>tconway@earthlink.net</td>
<td>$50.00</td>
<td>http://www.timconway.com</td>
</tr>
</tbody>
</table>
Примените функцию сортировки к таблице после загрузки страницы:
$(document).ready(function(){
$("#myTable").tablesorter();
});
В результате получится сортируемая таблица, наподобие этой:
| Фамилия | Имя | Долг | Веб-сайт | |
|---|---|---|---|---|
| Смит | Джон | jsmith@gmail.com | $50.00 | http://www.jsmith.com |
| Бах | Франк | fbach@yahoo.com | $40.00 | http://www.frank.com |
| Доу | Джейсон | jdoe@hotmail.com | $100.00 | http://www.jdoe.com |
| Конвей | Тим | tconway@earthlink.net | $50.00 | http://www.timconway.com |
Нажмите на заголовок любого столбца и вы увидите, что теперь таблица стала сортируемой. Перед вызовом функции tablesorter() вы можете сконфигурировать опции сортировки для конкретной таблицы. Для этого в функцию tablesorter() необходимо передать соответствующие аргументы. Например, для сортировки первого и второго столбца в порядке возрастания:
$(document).ready(function(){
$("#myTable").tablesorter({sortList: [[0,0], [1,0]]});
});
Заметьте, что плагин автоматически определяет большинство форматов данных, в том числе числа, даты, IP-адреса.
Настройка плагина
Плагин имеет множество опций, которые можно настроить во время его инициализации:
| Свойство | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
sortList |
Array | null |
Массив, задающий столбцы для сортировки и её направление: [[columnIndex, sortDirection], ...], где columnIndex — индекс столбца в таблице (если считать слева направо, первый столбец имеет индекс 0), а sortDirection принимает значение 0 для сортировки по возрастанию и 1 для сортировки по убыванию. Пример правильной настройки (для сортировки первого и второго столбца по возрастанию): [[0,0],[1,0]] |
sortMultiSortKey |
String | shiftKey |
Клавиша, используемая для выбора более чем одного столюца для сортировки. По умолчанию клавиша Shift. Параметр может принимать значения: ctrlKey, altKey. |
textExtraction |
String Or Function | simple |
Определяет метод извлечения данных из ячеек для сортировки. Возможные значения <td><strong> 123 Main Street </strong></td> При значении
var myTextExtraction = function(node)
{
// извлекает данные из разметки и возвращает их
return node.childNodes[0].innerHTML;
}
$(document).ready(function(){
$("#myTable").tableSorter( {textExtraction: myTextExtraction} );
});
|
headers |
Object | null |
Объект с настройками для отдельных столбцов:
headers: { 0: { option: setting }, ... }
Например, чтобы отменить сортировку первых двух столбцов таблицы, необходимо указать:
headers: { 0: { sorter: false}, 1: {sorter: false} }
|
sortForce |
Array | null |
Используется для добавления принудительной сортировки, которая будет действовать постоянно вместе с сортировкой, определенной пользователем. |
widthFixed |
Boolean | false |
Включает фиксированную ширину в столбцах таблицы. Это особенно полезно при использовании плагина Pager. Для работы этой функции необходим плагин jQuery dimension. |
cancelSelection |
Boolean | true |
Определяет, следует ли предотвращать выделение текста в заголовках таблицы th. Заголовки становятся похожими на кнопки. |
cssHeader |
String | "header" |
Стиль CSS, используемый для оформления заголовков несортируемых столбцов таблицы. Пример:
th.header {
background-image: url(../img/small.gif);
cursor: pointer;
font-weight: bold;
background-repeat: no-repeat;
background-position: center left;
padding-left: 20px;
border-right: 1px solid #dad9c7;
margin-left: -1px;
}
|
cssAsc |
String | "headerSortUp" |
Стиль CSS, используемый для оформления заголовков столбцов таблицы при сортировке по возрастанию. Пример:
th.headerSortUp {
background-image: url(../img/small_asc.gif);
background-color: #3399FF;
}
|
cssDesc |
String | "headerSortDown" |
Стиль CSS, используемый для оформления заголовков столбцов таблицы при сортировке по убыванию. Пример:
th.headerSortDown {
background-image: url(../img/small_desc.gif);
background-color: #3399FF;
}
|
debug |
Boolean | false |
Дает возможноть вывода отладочной информации на экран. Полезно в процессе разработки. |
| Вложение | Размер |
|---|---|
| Плагин jQuery Tablesorter 2.0.3 (исходные файлы, документация, примеры) [10] | 866.04 КБ |

Комментарии
Классная вещь. Сейчас проверю в работе. Спасибо!
+ 5 Очень нужная вещь, особенно пригодилась сортировка по ip-адресу. Использование INET_ATON отпадает само собой
У меня аналогичная таблица в 900 строк. Нужно чтоб отображалось по 100 строк на странице, а все остальные можно было просмотреть кликнув на следующие 100, еще 100 и т.д. Всего 9 страниц соответственно. При этом сортировка должна происходить по всей таблице, а не по тем 100, на странице с которыми нахожусь. Подскажите, пожалуйста, как это можно сделать?! За ранее, спасибо.
Самое простое решение для сортировки в таблицах при использовании jQuery Tablesorter — pager-плагин [11] (есть в архиве во вложении к этой статье).
Большое Вам спасибо за компонент.
Действительно полезный для работы!
Работает только с таблицами? Мне бы блоки div по дате отсортировать((
Отсортировать можно что-угодно ) - есть плагин TinySort. В этом плагине можно указать порядок сортировки, по каким атрибутам или даже вложенным элементам нужно сортировать.
Огромное спасибо!
+5 Зашибись плагин какой
Я подгружаю аяксом поочередно таблицы и применяю к ним .tablesorter(), вот тут и возникает проблема, плагин работает адекватно лишь в последней подгрузившейся таблице. в остальных он сортирует, но стрелочка в заголовке не меняется. Кто-то с этим сталкивался? Как решить проблему?
не могут установить. пишет :Не найден установочный XML-файл Joomla.
Joomla 2/5/17
:D
Плохо, что в таком формате «26 (0), 6 (0), 3 (0) и т.д..» неправильно сортирует. Может, кто знает, как поправить, буду признателен.
Скорее всего плагин сортирует эти данные формата "26 (0)", как строки. Используйте параметр textExtraction (он описан в статье) для извлечения только первой составляющей значения, например, 26, или преобразования типа 26 (0) -> 260.
А как сортировать по столбцам, которые в свое время тоже разбиты на столбцы?
Отличный плагин! Такой вопрос. Есть таблица, первый столбец которой - это места участников с 1-го по n-й. Соответственно, этот столбец нужно исключить из сортировки вообще. Т.е., там как было 1, 2, 3.... так и должно оставаться. Как такое сделать? Заранее спасибо за ответ.
При вызове функции sortList, значение sortDirection невозможно изменить. То есть изначально значение работает, а при щелчке на стрелочку значение перестает меняться, и сортировка происходит только в одну сторону.
У меня первая колонка в таблице это "номер по порядку" и данные там 1, 2, 3... При сортировке по любому из полей порядок в этой колонке сбивается. Как сделать чтобы первая колонка так и оставалась, не сортировалась?