#jquery #html
#jquery #HTML
Вопрос:
У меня есть следующий код
$("#description tr").each(function(){
var description;
var chargecode;
var amount=0;
……. код продолжается, но меня интересует выполнение каждой функции после первой строки. Моя первая строка таблицы имеет заголовки, поэтому мой код продолжает получать значения переменных null и так далее. Возможно ли это или я должен просто отделить строку заголовка как отдельную таблицу?
Вся помощь приветствуется
Комментарии:
1. Не могли бы вы добавить
class
атрибут ко всем строкам, кроме первой строки, и использовать$("#description tr.class")
?2. С точки зрения семантики вы должны поместить свою первую
tr
в athead
, а остальные вtbody
, чтобы вы могли выбирать#description tbody tr
.3. @zzzBov Ваше решение, которое я предпочитаю
Ответ №1:
Параметром для each()
обратного вызова является индекс. Вы могли бы использовать это или вы могли бы правильно определить свою таблицу с <thead>
помощью and <tbody>
, а затем использовать $("#description tbody tr")
Комментарии:
1. В то время как другие решения должны работать, я думаю, что это наиболее «правильное» решение. Если ваша первая строка таблицы является заголовком, пометьте ее как таковую, а затем вы можете выбрать тело таблицы, используя теги вместо классов.
Ответ №2:
Вы можете использовать:
$("#description tr:not(:first-child)")
Рабочий пример: http://jsfiddle.net/KntKA /
Есть еще один вариант $("tr:nth-child(n 2)")
, но он читается не так хорошо.
Комментарии:
1. Не сработало, как ожидалось. хотя спасибо. У меня есть несколько ячеек
Ответ №3:
Вы можете либо добавить класс в первую строку (или ко всем остальным) и отфильтровать его (посмотрите на не-селектор, или вы можете использовать индекс цикла (который является первым параметром), который увеличивается на каждой итерации, а затем просто пропустить первый (или выдобавьте свой собственный счетчик). Конечно, лучшим решением является:
$("#description tr:not(:first-child)")
Который использует как не-селектор, так и селектор первого дочернего элемента.
Вы также можете использовать селектор больше, чем:
$("#description tr:gt(0)")
Так много вариантов….Я бы выбрал последнюю.
Ответ №4:
Попробуйте —
$("#description tr:gt(0)").each(function(){
var description;
var chargecode;
var amount=0;
tr:gt(0)
Должны быть получены только строки с индексом in выше нуля, поэтому игнорируется первая строка.
Демонстрация http://jsfiddle.net/ipr101/rPMUh /
Комментарии:
1. Я хотел бы отметить, что
:gt(0)
предполагается, что существует только одна таблица. Если у вас несколько таблиц,:gt(0)
вы пропустите первый заголовок, но не остальные.2. Это хороший момент. Учитывая, что селектор сначала выбирает таблицу по идентификатору, казалось разумным предположить, что в этом случае это будет только одна таблица.
3. У меня есть несколько таблиц, и по какой-то причине это сработало не так, как ожидалось
Ответ №5:
Использовать $("#description tr:gt(0)").each
. Значение :gt(0)
означает «чей индекс больше 0″, и оно будет фильтровать совпадающие элементы по их индексу, встречающемуся на странице. Смотрите Документы.