Автор: Christian Bach
Версия: 2.0.3 (хроника изменений)
Лицензия:
Двойное лицензирование под MIT
or GPL лицензиями.
Просьба о помощи! Если Вам понравился tablesorter переведите немного денег в благодарность его создателям. Пожертвуйте, пожалуйста, или просмотрите список вожделений автора на Амазоне
Комментарии и благодарность можно отправить автору по адресу: christian at tablesorter dot com. Обсуждение плагина на форуме
Оглавление
Введение
Tablesorter – это плагин, созданный на основе JavaScript библиотеки jQuery и предназначенный для того, чтобы превратить обычную HTML-таблицу, содержащую теги THEAD и TBODY, в сортируемую таблицу без обновления страницы. Tablesorter способен успешно понимать и сортировать множество типов данных, включая связанные данные, содержащиеся в ячейке. Он имеет множество полезных функций, включая:
- Сортировку по нескольким столбцам
- Анализ с целью сортировки текста, URI, целых чисел, чисел с плавающей точкой, IP-адресов, валют, дат (согласно стандартам ISO, включая длинные и короткие форматы), времени. Легко добавьте свой
- Поддержку атрибутов ROWSPAN и COLSPAN в TH элементах таблиц.
- Поддержку «тайной» зависимой засортировки (например, поддержку сортировки по алфавиту при основной сортировке по другим критериям)
- Расширяемость посредством системы виджетов
- Кроссбраузерность: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+
- Малый размер кода
Демо
| Имя | Фамилия | Возраст | Всего | Скидка | Разница | Дата |
|---|---|---|---|---|---|---|
| Петр | Иванов | 28 | $9.99 | 20.9% | +12.1 | Jul 6, 2006 8:14 AM |
| Иван | Смирнов | 33 | $19.99 | 25% | +12 | Dec 10, 2002 5:14 AM |
| Сергей | Сидоров | 18 | $15.89 | 44% | -26 | Jan 12, 2003 11:14 AM |
| Михаил | Зубов | 45 | $153.19 | 44.7% | +77 | Jan 18, 2001 9:12 AM |
| Михаил | Медведев | 22 | $13.19 | 11% | -100.9 | Jan 18, 2007 9:12 AM |
Подсказка! Можно сортировать по нескольким столбцам, удерживая клавишу shift и кликая дважды, трижды или даже четыре раза по заголовку!!!
Начало работы
Для того чтобы использовать плагин tablesorter, нужно подгрузить jQuery
библиотеку и сам плагин tablesorter в теге <head> Вашего HTML документа.
<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"> <thead> <tr> <th>Фамилия</th> <th>Имя</th> <th>Email</th> <th>Платеж</th> <th>Сайт</th> </tr> </thead> <tbody> <tr> <td>Иванов</td> <td>Петр</td> <td>ivanov@gmail.com</td> <td>$50.00</td> <td>http://www.ivanov.ua</td> </tr> <tr> <td>Петров</td> <td>Иван</td> <td>petrov@yandex.ru</td> <td>$50.00</td> <td>http://www.petrov.com.ru</td> </tr> <tr> <td>Сергеев</td> <td>Михаил</td> <td>sergeed@mail.ru</td> <td>$100.00</td> <td>http://www.sergeev.ru</td> </tr> <tr> <td>Михайлов</td> <td>Потап</td> <td>medvedev@rambler.ru</td> <td>$50.00</td> <td>http://www.yandex.com</td> </tr> </tbody> </table>
После загрузки страницы дайте команду tablesorter сортировать страницу:
$(document).ready(function()
{
$("#myTable").tablesorter();
}
);
Кликая мышкой по заголовкам столбцов таблицы, Вы можете увидеть, что Ваша таблица теперь поддаётся сортировке! Вы также можете использовать опции при инициализации таблицы. В этом случае мы дадим команду сортировать первую и вторую колонки в порядке возрастания:
$(document).ready(function()
{
$("#myTable").tablesorter( {sortList: [[0,0], [1,0]]} );
}
);
Примечание! Tablesorter автоматически опознаёт большинство типов данных, включая числа, даты, ip-адреса. Для дополнительной информации смотри примеры
Примеры
Эти примеры призваны продемонстрировать, на что способен tablesorter. У Вас должно быть разрешено использование Javascript для просмотра этих примеров, также как Вам и Вашим пользователям понадобится включенный Javascript для работы tablesorter.
Главные- Установка начального порядка сортировки, используя параметры
- Работа с числами!
- Запрет заголовков, используя опции
- Сортировка таблицы, используя ссылку, расположенную вне таблицы
- Задание принудительной сортировки
- Меняем клавишу для сортироки по нескольким колонкам
- Задаем порядок сортировки при использовании метаданных
- Запрещаем сортировку столбца, используя метаданные
- Устанавливаем парсер колонки, используя метаданные
- Триггеры sortEnd и sortStart(Отображение заставки при процессе сортировки)
- Добавление данных с помощью Ajax
- Запуск Tablesorter при пустой таблице
- Работа с тегами внутри ячеек
- Расширяем опции по умолчанию.
- Включение режима отладки
- Парсеры, написание собственного
- Виджеты, написание собственного
Конфигурация
Tablesorter понимает множество опций, с помощью которых Вы можете добиться именно того эффекта, что нужен Вам:
| Свойство | Тип | По умолчанию | Описание | Ссылка |
|---|---|---|---|---|
| sortList | Array | null | Массив с инструкциями по колонкам сортировки и порядке в формате [[ИндексКолонки, НаправлениеСортировки], ... ] где ИндексКолонки номер колонки, начинающийся с нуля и считающийся слева направо, а НаправлениеСортировки равно 0 сортировки по возрастанию и 1 по убыванию. Пример аргументов для сортировки по возрастанию сначала первой колонки, а потом второй выглядит вот так: [[0,0],[1,0]] |
Пример |
| sortMultiSortKey | String | shiftKey | Клавиша, используемая для выбора более чем одной колонки при многостолбцовой сортировке. По умолчанию - shift. Также можно использовать ctrlKey, altKey. Ссылка: http://developer.mozilla.org/en/docs/DOM:event#Properties |
Пример |
| textExtraction | String Or Function | simple |
Определяет при помощи какого метода извлекать данные из ячейки таблицы для дальнейшей сортировки. Встроенные методы - "simple" и "complex". Есть смысл использовать "complex", если Ваши данные обрмлены тегами в ячейке таблицы как: <td><strong><em>Тверская 13</em></strong></td>. Complex может быть медленным при больших таблицах, так что подумайте, может Вам стоит написать свою функцию, навроде "myTextExtraction", привдеенной ниже:
var myTextExtraction = function(node)
{
// извлекаем данные из тегов и возвращаем их
return node.childNodes[0].childNodes[0].innerHTML;
}
$(document).ready(function()
{
$("#myTable").tableSorter( {textExtraction: myTextExtraction} );
}
);
Tablesorter передаст соответствующий объект jQuery (который в свою очередь будет содержать содержимое ячейки) для парсинга и передачи как возвращаемое значение. Благодарим Джона Нэша за пример.
|
Пример |
| headers | Object | null |
Объект с инструкция для управления колонкой в формате: headers: { 0: { option: setting }, ... } Например, отключить сортировку в первых двух колонках таблицы: headers: { 0: { sorter: false}, 1: {sorter: false} }
|
Пример |
| sortForce | Array | null | Используется для добавления дополнительной принудительной сортировки, применяемой, когда пользователь меняет сортировку в других колонках. Например, может применяться для сортировки людей по алфавиту после какого-либо другого способа сортировки, выбранного пользователем до этого, когда первая сортировка выдала одинаковый результат для нескольких элементов – числа или даты. Это препятствует выводу зависимых данных в случайном порядке. | Пример |
| widthFixed | Boolean | false | Указывает должен ли tablesorter применять фиксированную ширину к столбцам таблицы. Эта функция полезно при использовании для плагина Pager. Требует плагина jQuery dimension | Пример |
| cancelSelection | Boolean | true | Указывает, должен ли tablesorter запрещать выделение текста в заголовке таблицы (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 | Метка Boolean управляет, должен ли tablesorter отображать отладочную информацию, полезную для разработчика | Пример |
Загрузка
Полная версия - плагин, документация, аддоны, темы jquery.tablesorter.zip
На выбор - Обязательно разместите компоненты, отмеченные как "обязательные" и проверьте, чтобы они были доступны через браузер.
Обязательно:- jQuery (1.2.1 или выше)
- jquery.tablesorter.min.js (12kb, сжат для экономии места)
- metadata.js (3,7кб Требуется, если будете использовать метаданные)
- jquery.tablesorter.js (17,7kb, для разработки)
- jquery.tablesorter.pager.js (3,6kb, tablesorter плагин по-страничного вывода)
- Green Skin - изображения и стиль CSS для зелёной темы заголовков
- Blue Skin - изображения и стиль CSS для синей темы заголовков (Та, что Вы видите в примерах)
Совместимость с браузерами
Tablesorter был успешно протестирован в следующих браузерах при включённом Javascript:
- Firefox 2+
- Internet Explorer 6+
- Safari 2+
- Opera 9+
- Konqueror
Поддержка
Поддержка на английском языке осуществляется через лист рассылки jQuery.
Доступ к jQuery листу рассылки также доступен через Nabble Forums.
Обсуждение и поддержка плагина на русском языке на форуме
Титры
Плагин написан Christian Bach (Кристиан Бах).
Составление документации Брайан Гидинелли, на основе шикарной документации Майка Олсупа.
John Resig респект и уважуха за его офигенный jQuery
Перевод документации Zayamaya, А. Ушаков.
Ссылки для разработчиков
- Продвижение сайтов с помощью поисковых систем
- Что нужно, чтобы ваш сайт попал в DMOZ?
- Практический опыт использования MediaTarget
- Хорошие ссылки - только вечные ссылки
- Скрипт php генератор паролей. Легко запоминающихся
- Zopim - сервис онлайн-поддержки пользователей
- А Вы знаете, что Вы можете использовать на своем сайте любой шрифт испозуя технологию Cufon
- Генератор названий, брендов, доменов, ников - и все бесплатно.