【发布时间】:2010-12-29 03:21:19
【问题描述】:
$('.table tbody td:eq(3)').addClass('col4');
..有效,但只选择第一个单元格,而不是列中的所有单元格。
【问题讨论】:
标签: javascript jquery css jquery-selectors css-selectors
$('.table tbody td:eq(3)').addClass('col4');
..有效,但只选择第一个单元格,而不是列中的所有单元格。
【问题讨论】:
标签: javascript jquery css jquery-selectors css-selectors
您还可以使用<col> 元素来设置整个列的样式,而不必将样式应用于该列中的所有<td>s。
【讨论】:
border、background、width 和visibility(以及它们的所有部分,例如border-style),尽管该示例实际上使用table-layout 进行说明,因此这可能是一个不完整的列表。你当然不能级联,例如col:hover td { background:red } :-(
试试:
$(".table tbody td:nth-child(4)").addClass("col4");
注意:我在这里放了 4,因为 :eq(n) 是从零开始的,:nth-child(n) 是从一开始的。
您偶然发现了两者之间的主要区别。 eq(3) 将只返回一个元素,即 整个 集合中的第 4 个元素。就像:first 只返回一个元素(最大值),而:first-child 可以返回很多。
【讨论】:
:eq 选择器应该被怀疑地看待。它不像其他所有 :psuedo-class 选择器一样适用于上下文中的选择器部分,而是适用于整个选择器。由于它不是标准的 CSS 选择器,它还强制使用 Sizzle 库,而不是在较新的浏览器中使用快速的 querySelectorAll 实现。如果您需要此功能,请避免使用 :eq 选择器;在结果上使用.eq()。