Вопрос по 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-ем перебираем? Таблица то одна. (на всякий случай поясню что алгоритм сортировки не идеальный. просто в книге он рассматривается как первый шаг, который в дальнейшем улучшается в следующих примерах) |
Пользуйте кнопку JS
http://api.jquery.com/jQuery/ - это по поводу контекста each-ем перебираем все th в контексте данной таблицы Если бы в качестве $table у вас был селектор - то вы могли бы воспользоваться этим $($table+' th') |
Часовой пояс GMT +3, время: 11:01. |