Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/70: Рейтинг темы: голосов - 70, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 34
1

Как через each() осуществлять перебор строк таблицы

08.02.2012, 11:10. Показов 14492. Ответов 3
Метки нет (Все метки)

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

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$(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-ем перебираем? Таблица то одна.

(на всякий случай поясню что алгоритм сортировки не идеальный. просто в книге он рассматривается как первый шаг, который в дальнейшем улучшается в следующих примерах)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2012, 11:10
Ответы с готовыми решениями:

Анпивот таблицы - быстрый перебор строк
Люди, здравствуйте. Есть таблица (типа таблица - диапазон, оформленный под таблицу). И он...

Как осуществлять обновление ПО через АД на все ПК
Есть организация, в ней находятся 20 ПК. Несколько вопросов ... 1) Как осуществлять обновление ПО...

осуществлять выбор строк программы
С помощью директив #if, #else, #elif осуществлять выбор строк программы для вычисления либо...

History. Как создать массив строк, как его заполнить, и как производить перебор элементов
Добрый день, мне нужно реализовать некое подобие хистори. Поясню: есть некое окно, в котором...

3
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
08.02.2012, 18:23 2
Код расчитан на то что возможно на странице буде 2 или 10 таблиц с классом sortable
Соответственно мы проверяем все таблицы на страницы (В данном случае одна) и уже лепим код сортировки.
Javascript
1
2
var $table = $(this); // определяем переменную $table и пихаем туда конкретно ту таблицу на которую климкнули
$('th', $table).each(function(column) {.. //Выбираем все th конкретно в той таблице на которую тыкнули. //Это как раз и нужно для того чтобы скрипт не путал какую табличку просматривать если на страницы //их не одна
0
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 34
08.02.2012, 18:45  [ТС] 3
Так а мне всегда казалась что синтаксис выборки следующий:
$(table th) - выбрать в таблице все th
или
$(table.sorttable th) - в таблице с классом sortable выбрать все th
или
$(#test p) - выбрать все абзацы (<p>) в контейнере с id=test
и т.д.
Т.е. синтаксис как у CSS.

А в данном примере видим, сначала th в аппострофах, потом через запятую переменная с объектом таблицы...
0
261 / 247 / 57
Регистрация: 03.09.2010
Сообщений: 805
08.02.2012, 18:47 4
для освоения jquery ты слишком запутанный пример взял) А вообще да, такой он jquery.Изучли синтаксис $() вот этой штуки, тогда станет понятнее.

В твоем примере, если бы сделал так "$(table th) - выбрать в таблице все th" то у тебя бы выбралист вообще все таблицы которые есть на странице, допустим у тебя их 8 ))
0
08.02.2012, 18:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2012, 18:47
Помогаю со студенческими работами здесь

Как сделать перебор данных по полям таблицы?
Привет всем. У меня есть таблица(user) в которой есть поле(rss), которое может иметь числовое...

Транслитератор с кириллицы в латиницу и наоборот, вводи строк нужно осуществлять с клавиатуры
Помогите написать транслитератор с кириллицы в латиницу и наоборот, вводи строк нужно осуществлять...

Вывод всех строк таблицы через запятую в строку
Добрый день Подскажите как вывести из таблицы значений все значения колонки &quot;наименование &quot;, через...

LocalStorage - как организовать перебор элементов по определенному признаку через цикл for
Например, есть localStorage и в нем находится несколько объектов - это товары. *Наполняем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru