Показать сообщение отдельно
  #1 (permalink)  
Старый 08.02.2012, 09:00
Интересующийся
Отправить личное сообщение для battrack Посмотреть профиль Найти все сообщения от battrack
 
Регистрация: 03.03.2009
Сообщений: 13

Вопрос по each() и перебору строк таблицы
В данный момент занимаюсь изучением jQuery сразу по двум книгам и информации из инета. В одной книге застрял на одном примере.
Вопрос чисто по синтаксису (по крайней мере я так думаю).
Рассматривается пример сортировки таблицы при клике на заголовок столбца.
Есть таблица <table class="sortable">
в которой строками являются книги (столбцы: заголовок, автор, издание, цена).таблица разделена на <thead> и <tbody>
Клик по ячейке <th class="sort-alpha">title</th> вызывает функцию сортировки строк данной таблицы по названию.
Ниже привожу код.


$(document).ready(function() {
$('table.sortable').each(function() {
var $table = $(this);
$('th', $table).each(function(column) {
var $header = $(this);
if ($header.is('.sort-alpha')) {
$header.addClass('clickable').hover(function() {
$header.addClass('hover');
}, function() {
$header.removeClass('hover');
}).click(function() {
var rows = $table.find('tbody > tr').get();
rows.sort(function(a, b) {
var keyA = $(a).children('td').eq(column).text()
.toUpperCase();
var keyB = $(b).children('td').eq(column).text()
.toUpperCase();
if (keyA < keyB) return -1;
if (keyA > keyB) return 1;
return 0;
});
$.each(rows, function(index, row) {
$table.children('tbody').append(row);
});
});
}
});
});
});

Вопрос по конкретной части кода (весь код чтобы мне понять - до этого еще далеко). Пока вопрос лишь по 4-ой строке:

$('th', $table).each(function(column) { - что это за синтаксис такой?
$('th', $table) - ???? если мы хотим перебрать все колонки почему не записываем таким образом: $($table th) ??

Также не понятно применение each к таблице в целом (2-я строка кода). Что мы этим each-ем перебираем? Таблица то одна.

(на всякий случай поясню что алгоритм сортировки не идеальный. просто в книге он рассматривается как первый шаг, который в дальнейшем улучшается в следующих примерах)
Ответить с цитированием