Статьи

Введение в Tablesorter

Конечный продукт
Что вы будете создавать

Tablesorter — простой плагин jQuery, который обеспечивает динамическую сортировку столбцов и разбиение на страницы в ваших HTML-таблицах. Это хороший способ создания сортируемых таблиц, которые не требуют обновления пользователем страницы. Вы также можете использовать его, когда вы используете Ajax в своем приложении.

В этом уроке будет показан реальный код и три примера использования Tablesorter. Вы можете скачать код на GitHub . Обратите внимание, что в загрузке Tablesorter фактически отсутствуют несколько графических изображений для своих пейджеров, поэтому вы можете использовать мои файлы GitHub.

Загрузите код для этой демонстрации Tablesorter на Github

Мой первый пример показывает, как использовать Tablesorter для предоставления сортируемого списка интернет-доменов для продажи. Вы можете увидеть демо здесь и код здесь .

Есть несколько компонентов, которые нам нужно настроить для Tablesorter. Сначала мы должны загрузить jQuery и плагин TableSorter. Я также загружу его синюю тему CSS:

1
2
3
<script type=»text/javascript» src=»./js/jquery-latest.js»></script>
   <script type=»text/javascript» src=»./js/jquery.tablesorter.min.js»></script>
 <link rel=»stylesheet» href=»./themes/blue/style.css» type=»text/css» media=»print, projection, screen» />

Затем мы создадим таблицу HTML:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
<table id=»domainsTable» class=»tablesorter»>
    <thead>
    <tr>
        <th>Domain name</th>
        <th>gTld</th>
        <th>Category</th>
        <th>Price</th>
        <th>Contact</th>
    </tr>
    </thead>
    <tbody>
      <tr><td><a href=»http://geogram.co»>geogram.co</a></td><td>co</td><td>Internet</td><td>$49</td><td><a href=»mailto:[email protected]?subject=Offer for domain name: geogram.co»>Purchase</a></td></tr>
      <tr><td><a href=»http://newscloud.com»>newscloud.com</a></td><td>com</td><td>News</td><td>$19999</td><td><a href=»mailto:[email protected]?subject=Offer for domain name: newscloud.com»>Purchase</a></td></tr>
      <tr><td><a href=»http://popcloud.com»>popcloud.com</a></td><td>com</td><td>Music</td><td>$14999</td><td><a href=»mailto:[email protected]?subject=Offer for domain name: popcloud.com»>Purchase</a></td></tr>
<!— … —>
</tbody>
    </table>

После этого нам нужно инициализировать Tablesorter при загрузке страницы:

1
2
3
4
5
6
7
8
<script>
   $(document).ready(function()
       {
           $(«#domainsTable»).tablesorter({sortList: [[3,1],[2,0]]});
       }
   );
   </script>
   </body>

В приведенном выше примере я устанавливаю четвертый столбец, который является столбцом цены, для сортировки в порядке убывания, и я устанавливаю третий столбец, который является столбцом категории, для сортировки в порядке возрастания.

После этого вы должны увидеть что-то вроде этого:

Основные таблицы

Если вы не загружаете свои таблицы динамически из базы данных, вам может быть интересно, есть ли более простой способ генерировать код таблицы HTML из длинных списков. Есть! Я описываю это в разделе Как парковать, перечислять и продавать свои домены .

По сути, я использую электронную таблицу Google Drive, в которой перечислены мои домены, категории и цены, и использую функции сцепления для генерации псевдонимов сервера Apache, кода ценообразования JavaScript и строки таблицы Tablesorter HTML:

Моя таблица Google Drive, генерирующая HTML-таблицу

Вот как выглядит объединенная функция в Google Диске:

1
=CONCATENATE(«<tr>»,»<td>»,F2,»</td>»,»<td>»,B2,»</td>»,»<td>»,D2,»</td>»,»<td>$», TO_DOLLARS(E2),»</td>»,»<td>»,G2,»</td>»,»</tr>»)

Я использую тему Domena, доступную на Envato Market, в качестве целевых страниц для каждого домена:

Страница «Мои домены для продажи» на платформе Domena Theme

Я настроил JavaScript в теме, чтобы изменить цену в зависимости от загруженного домена. Я думаю, что новые версии Domena более элегантно обрабатывают несколько доменов.

Теперь мы покажем вам, как реализовать разбиение на страницы с помощью Tablesorter. Вы можете увидеть демо здесь и получить код здесь . Это должно выглядеть примерно так:

Пейджинг с помощью Tablesorter

На этот раз мы инициализируем Tablesorter в <head> . Мы также добавим скрипт плагина Tablesorter:

1
2
3
4
5
6
7
8
<script type=»text/javascript» src=»./js/jquery.tablesorter.pager.js»></script>
 <script type=»text/javascript»>
$(function() {
        $(«table»)
            .tablesorter({widthFixed: true, widgets: [‘zebra’]})
            .tablesorterPager({container: $(«#pager»)});
    });
    </script>

Мы разместим HTML- div для пейджера под таблицей:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
</table>
   <div id=»pager» class=»pager»>
       <form>
           <img src=»./addons/pager/icons/first.png» class=»first»/>
           <img src=»./addons/pager/icons/prev.png» class=»prev»/>
           <input type=»text» class=»pagedisplay»/>
           <img src=»./addons/pager/icons/next.png» class=»next»/>
           <img src=»./addons/pager/icons/last.png» class=»last»/>
           <select class=»pagesize»>
               <option selected=»selected» value=»10″>10</option>
               <option value=»20″>20</option>
               <option value=»30″>30</option>
               <option value=»40″>40</option>
           </select>
       </form>
   </div>
   </body>

Вот и все.

Обратите внимание, что я обнаружил, что значки пейджера были удалены с сайта Tablesorter GitHub, поэтому я скачал их вручную из демоверсии. Возможно, вам будет проще получить их из разветвленной версии репозитория Tuts + .

Теперь мы рассмотрим, как использовать jQuery для динамического заполнения таблицы Tablesorter. Для начала мы инициализируем таблицу Tablesorter только с доменами .IO. Это будет выглядеть примерно так:

Демонстрация AJAX Tablesorter

Когда вы нажмете на ссылку « Добавить домены .COM» , вы увидите, что таблица расширяется доменами .COM.

Вы можете увидеть демо здесь и код здесь . HTML-код для запроса Ajax с доменами .COM находится здесь .

Вот код, который отвечает на событие click, загружая дополнительные строки через Ajax:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
p><a id=»add-com-domains» href=»#»>Add .COM Domains via AJAX</p>
   <script>
   $(document).ready(function()
       {
           $(«#domainsTable»).tablesorter({sortList: [[3,1],[2,0]]});
           $(«#add-com-domains»).click(function() {
                    $.get(«./com-domains.html», function(html) {
                        // append the «ajax’d» data to the table body
                        $(«table tbody»).append(html);
                       // let the plugin know that we made a update
                       $(«table»).trigger(«update»);
                       // set sorting column and direction, this will sort on the third and second column
                       var sorting = [[3,1],[2,0]];
                       $(«table»).trigger(«sorton»,[sorting]);
                   });
                   $(this).hide();
                   return false;
               });
       }
   );
   </script>

Tablesorter может определенно улучшить пользовательский опыт, если используется хорошо.

Надеюсь, вы нашли этот урок полезным. Пожалуйста, не стесняйтесь размещать исправления, вопросы или комментарии ниже. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую.