2012-01-04 2 views
0

мне нужно укладывать первый TD каждой строки,Стиль первый <TD> следующий ряд ж/некоторого класса

  • следует столбец с классом «заголовок», и
  • не имеет Объединение столбцов набор

Я не думаю, что это можно сделать только с помощью CSS, поэтому я предполагаю, что мне нужно использовать jQuery?

<tr> 
    <td colspan="2" class="header">abc</td> 
</tr> 
<tr> 
    <td>sasdas</td> 
    <td>21234r</td> 
</tr> 

... что-то вроде?

$(".header").next("tr>td").css("width","20%"); 
+1

Столбцы имеют класс 'header', а не строку. – PeeHaa

+0

Как насчет вместо того, чтобы
'' Есть: '' Тогда вы, вероятно, могли бы сделать это в только CSS. – peduarte

+0

@PeeHaa Хороший улов. Исправленный. – santa

ответ

2

Поскольку classheader находится на <td>, вам необходимо получить его родителя <tr>. Затем получите следующий <tr>, найдите первые <td>. Это как-то уродливо, похоже, вы можете использовать <th> для заголовков столбцов и отделить их от ячейки таблицы.

Попробуйте это:

$(".header").closest('tr').next("tr").find('td:first').not('[colspan]').css("width","20%"); 
+0

Я думаю, вы имели в виду '.closest ('tr')' и 'first' не принимает аргументы. Вы, вероятно, хотите '.next (« tr »). Children ('td: first'). Not ('[colspan]')' –

+0

@Gabe Я думаю, мне нужно будет изменить find ('td: first') на find ('td: first-child'), так как у меня несколько строк (только один пример), но я думаю, что это именно то, что мне нужно. Благодарю. – santa

0

:not() действует CSS3, то :has() является JQuery/Шипение только, остальное CSS2.

$('tr:has(.header) + tr td:first-child:not([colspan])') 
0

Я бы рекомендовал использовать TH для ваших строк заголовков. Гораздо чище, семантически корректно, плюс он делает это, поэтому вам не нужно использовать jQuery, чтобы позаботиться обо всем этом.

HTML:

<tr> 
    <th colspan="2">abc</th> 
</tr> 
<tr> 
    <td>sasdas</td> 
    <td>21234r</td> 
</tr> 

CSS:

td:first-child { 
width: 20%; } 

касается только стилизации строки после заголовка: он выглядит, как вы просто пытаетесь заставить что один столбец быть шириной 20% ? Таким образом, не будет никакого вреда в использовании CSS, который применяет к нему каждый первый столбец. Support for first-child довольно прост в сегодняшнем браузере (IE8 требует DOCTYPE, но он будет работать. Полифиль доступен для более старых версий, если это необходимо).

+0

Но у меня есть несколько строк с этим классом, и на странице есть другие вложенные таблицы ... – santa

Смежные вопросы