如何使用CSS获取特定数字的孩子?

Sat*_*000 269 html css css-selectors css3

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

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

Bol*_*ock 396

对于现代浏览器,使用td:nth-child(2)第二个tdtd:nth-child(3)第三个.请记住,这些检索td 每行的第二个和第三个.

如果您需要与早于版本9的IE兼容,请使用Tim建议的兄弟组合器或JavaScript .另请参阅我对这个相关问题的答案,以解释和说明他的方法.

  • 不要忘记这只适用于CSS 3选择器(换句话说,不适用于9之前的IE版本). (19认同)
  • 作为一般解决方案,`td:nth-​​of-type(3)`更好.`td:nth-​​child(3)`将匹配一个**既是**td**又**又是其父亲的第三个子元素的元素**,无论其前两个兄弟姐妹的元素类型如何**.`td:nth-​​of-type(3)`将获得第三个`td`,**无论在它之前有多少非```元素**.如果在你想要的那个之前没有非```元素,那么两个选择器将匹配相同的东西. (2认同)

Tim*_*Tim 230

对于IE 7和8(以及其他没有CSS3支持而不包括IE6的浏览器),您可以使用以下内容来获取第2和第3个孩子:

第二个孩子:

td:first-child + td
Run Code Online (Sandbox Code Playgroud)

第三个孩子:

td:first-child + td + td
Run Code Online (Sandbox Code Playgroud)

然后,只需+ 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");
    });
});
Run Code Online (Sandbox Code Playgroud)

然后在你的CSS中你只需使用那些类选择器来做你喜欢的任何改变:

table td.firstChild { /*stuff here*/ }
table td.secondChild { /*stuff to apply to second td in each row*/ }
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供IE7/8技巧.效果很好. (19认同)
  • +1我永远不知道我可以做一些像td:first-child + td (10认同)
  • 您可以将我的答案中的CSS3选择器或您的CSS2选择器中的CSS3选择器放到jQuery中,它们将在IE6中自然地工作.无需跳过所有这些额外的箍来添加类. (2认同)