Шаг 123.
Библиотека jQuery. Работа с таблицами. Сортировка и разбивка на страницы. Сортировка с помощью JavaScript. Особенности ключей сортировки

    На этом шаге мы рассмотрим некоторые особенности ключей сортировки.

    Теперь нам необходимо реализовать тот же вид сортировки для столбца Автор(ы). Мы можем выполнить сортировку по столбцу Автор(ы) с помощью существующего программного кода простым добавлением класса sort-alpha к ячейке в заголовке таблицы. В идеале сортировка должна выполняться по фамилиям авторов, а не по именам. Так как некоторые книги могут быть написаны коллективами авторов, а для некоторых авторов могут указываться отчества или инициалы, нам необходимо определить, какую часть текста ячейки следует использовать в качестве ключа сортировки. Мы можем обозначить эту часть текста, обернув ее тегом:

.   .   .   .   .
<tr>
  <td><img src="images/pic01.jpg" width="49" height="61" alt="Создаем динамические 
  веб-сайты с помощью PHP, MySQL и JavaScript" /> </td>
  <td>Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript</td> 
  <td><span class="sort-key">Никсон</span> Р.</td> <td>2013</td> 
  <td>381 руб</td> 
</tr> 
<tr>
  <td><img src="images/pic02.jpg" width="49" height="61" alt="PHP и MySQL. 
   Исчерпывающее руководство" /> </td>
  <td>PHP и MySQL. Исчерпывающее руководство </td>
  <td><span class="sort-key">Маклафлин</span> Б.</td> 
  <td>2013</td> <td>563 руб</td> 
</tr>
.   .   .   .   .

    Теперь следует изменить реализацию сортировки так, чтобы принять во внимание этот тег и не нарушить при этом существующий порядок сортировки по столбцу Название. Добавив перед отмеченным ключом сортировки ключ, который был вычислен ранее, мы можем отсортировать данные в таблице сначала по фамилиям авторов, если они обозначены в разметке, или в противном случае по всему тексту в ячейке:

           $.each(rows, function(index, row) {
             var $cell = $(row).children('td').eq(column);
             row.sortKey = $cell.find('.sort-key').text()
               .toUpperCase() + ' '
               + $cell.text().toUpperCase();
           });

    Сейчас для сортировки по столбцу Автор(ы) используется предоставленный ключ, благодаря чему она выполняется по фамилиям авторов, как показано на рисунке 1.

Рис.1. Таблица, позволяющая сортировать по названиям и фамилиям авторов

Полный текст этого примера можно взять здесь.

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

    На следующем шаге мы рассмотрим сортировку данных других типов.




Предыдущий шаг Содержание Следующий шаг