将类附加到同一列中

时间:2009-12-01 22:52:01

标签: jquery css-selectors html-table

我现在一直在网上搜索几个小时,但我仍然无法弄明白。

<table>  
  <tr>  
    <th class="name">Name</th>
    <th class="age">Age</th>
    <th class="nick">Nick</th>
  </tr>  

  <tr>  
    <td>John</td>
    <td>30</td>
    <td>Johnny</td>
  </tr>

  <tr>  
    <td>Robert</td>
    <td>35</td>
    <td>Bob</td>
  </tr>
</table>

有没有办法将这些标题中的类附加到同一列中的TD标记?

1 个答案:

答案 0 :(得分:4)

我会这样做:

$("table th").each(function(i, val) {
  var th = $(this);
  var selector = "td:nth-child(" + (i+1) + ")";
  th.parent().siblings().find(selector).attr("class", th.attr("class"));
});

它使用:nth-child selector在同一列中有效地获得相同的<td>。如果你使用rowspan / colspan元素,它就会崩溃。

注意:您必须在索引中添加一个,因为each()上的索引从零开始,但:nth-child()是从一开始的。

此外,您不能在此上下文中使用:eq选择器,因为它只匹配单个元素。