如何使用CSS来获得特定编号的孩子?


270

我有一个table,其tds的动态创建。我知道如何生第一个和最后一个孩子,但我的问题是:

有没有办法让第二个或第三个孩子使用CSS?

Answers:


398

对于现代浏览器,请td:nth-child(2)用于第二个tdtd:nth-child(3)第三个。记住,它们td 为每一行检索第二和第三

如果需要与版本9之前的IE兼容,请使用Tim推荐的同级组合器或JavaScript 。另请参阅我对此相关问题的回答,以获取有关其方法的解释和说明。


19
不要忘记,这仅适用于CSS 3选择器(换句话说,不适用于9之前的IE版本)。
zneak 2011年


2
作为一般解决方案,td:nth-of-type(3)效果更好。td:nth-child(3)将匹配是一个元素一个td 其父母的第三个孩子,不管元素类型的前两个兄弟姐妹的不管之前有多少个非元素td:nth-of-type(3)它将获得第三个。如果在您想要的元素之前没有非元素,则两个选择器都将匹配同一事物。tdtdtd
CJ丹尼斯

232

对于IE 7和8(以及其他不支持CSS3的浏览器(不包括IE6)),您可以使用以下命令获取第二个和第三个子代:

第二个孩子:

td:first-child + td

第三个孩子:

td:first-child + td + td

然后,只需+ td为您要选择的每个其他孩子添加另一个。

如果您想支持IE6,也可以这样做!您只需要使用一些javascript(在此示例中为jQuery):

$(function() {
    $('td:first-child').addClass("firstChild");
    $(".table-class tr").each(function() {
        $(this).find('td:eq(1)').addClass("secondChild");
        $(this).find('td:eq(2)').addClass("thirdChild");
    });
});

然后在CSS中,您只需使用这些类选择器即可进行所需的任何更改:

table td.firstChild { /*stuff here*/ }
table td.secondChild { /*stuff to apply to second td in each row*/ }

19
感谢您的IE7 / 8提示。效果很好。
布伦登·克劳福德

2
您可以将CSS3选择器放入我的答案中,也可以将CSS2选择器放入您的答案中,然后将它们直接放入jQuery,它们将在IE6中正常工作。无需跳过所有这些额外的步骤即可添加类。
BoltClock
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.