Самый простой способ - присвоить внешней таблице идентификатор, такой как CSS class
или id
. Тогда это тривиально. Кстати, я думаю, что селектор :odd
должен быть :nth-child(odd)
$("table.highlight > tr:nth-child(odd) > td")
.css({"background-color":"rgb(233,247,255)"});
Здесь мы используем класс CSS highlight
для внешней таблицы, и поэтому ячейки внутренней таблицы в нечетных строках не применяют стиль.
EDIT:
Без какого-либо идентификатора все немного сложнее, но это работает (хотя я уверен, что есть более краткий способ сделать это)
$("table")
.filter(function() { return this.parentNode.nodeName.toLowerCase() !== "td" })
.children('tbody').children('tr:nth-child(odd)').children('td')
.css({"background-color":"rgb(233,247,255)"});
find()
нельзя использовать вместо children()
, поскольку нечетные строки внутренней таблицы также будут совпадать и возвращаться в упакованном множестве.
Вот Рабочая демоверсия
EDIT:
В ответ на ваш отредактированный вопрос чередование нечетных или четных строк для каждой таблицы является простым
$('table tbody').children('tr:nth-child(odd)').css({"background-color":"green"})
Я бы порекомендовал использовать :nth-child(odd|even)
сверх :odd|even
, так как первый является индексом, основанным на единице, и поэтому нечетные строки (1,3,5 и т. Д.) выбран; Последнее основано на нуле, что означает, что четные строки (2,4,6 и т. Д.) Будут «нечетными строками». На мой взгляд, не совсем совпадают селекторы с семантическим названием. Кроме того, я бы рекомендовал использовать стиль CSS для этого над встроенным стилем и применить класс CSS к <tr>
, используя addClass()
. Использование классов CSS позволит вам легко модифицировать стили и применять их на разных страницах. Примерно так:
tr.odd > td { background-color: green; }
tr.even > td { background-color: red; }
Чтобы применить чередование зебр к столу, у вас есть, на мой взгляд, два реальных варианта
Примените один фоновый цвет ко всем <tr>
элементам в таблице, а затем просто добавьте класс CSS в нечетные / четные строки, чтобы добавить другой цвет фона, с которым вы хотите нанести полосу.
Применение обоих классов CSS с помощью jQuery.
Вот код для второго варианта
$('table tbody') // find <tbody> that are descendents of <table>
.children('tr:nth-child(odd)') // find odd <tr>
.addClass('odd') // add odd class
.end() // jump back to previous wrapped set
.children('tr:nth-child(even)')// find even <tr>
.addClass('even'); // add even class
И Рабочая демоверсия . добавьте / edit к URL, чтобы увидеть код.