2012-12-20 64 views
36

如何选择表中除第一个和最后一个之外的所有子项?我已经试过这一点,但它最终选择不在第一所有的儿童和未持续所有的孩子,这最终被所有的孩子:如何使用CSS选择器选择除第一个和最后一个以外的所有子女

table.programs tr td:not(:first-child), table.programs tr td:not(:last-child) { 
} 

我想既不是第一次所有的孩子,也不持续。我怎样才能做到这一点?

+0

与此相关:http://stackoverflow.com/questions/7403129/combining-not-selectors-in-css – Spudley

+1

这一个更密切相关:http://stackoverflow.com/questions/10033299/is-there-any三通到指定-A-CSS-shorthand- for-all-elements-except-the-first-l(可能甚至是一个骗局) – BoltClock

回答

2

我认为这应该为你工作:

table.programs tr td:not(:first-child,:last-child) 
+0

他说CSS,而不是jQuery。 – Barmar

+0

那么,他伤心的CSS选择器(jQuery也使用它)。但考虑到他发布的语法,这一点是模拟=)。 –

+0

请注意,如果您在CSS中使用此功能,则某些旧浏览器不支持此功能。如果可能的话,我会考虑给你所有的第一个和最后一个元素“第一个”和“最后一个”类。 –

3

jQuery的解决方案是好的,但如果你想这样做的纯CSS我建议你到规则适用于整个表格,然后重置他们为第一个和最后一个孩子。即:

table.programs tr td { 
    /* your rules here */ 
} 

table.programs tr:first-child td:first-child, 
table.programs tr:last-child td:last-child { 
    /* reset your rules here */ 
} 

jsFiddle demo

+0

我认为你的答案是最好的,因为它是跨浏览器的,所以7,8(仍然是实际的),带有旧ie的windows phone支持它。 – Serg

49

使用两个:not()选择器结合,由此参照匹配两者,即元素匹配既不用作:not()操作数选择器的元件:

table.programs td:not(:first-child):not(:last-child) 
+0

@FrankV,你误解了另一个问题及其答案。这个问题涉及链接':not()'选择器,但询问是否有其他选择。 –

+0

我看到谢谢..... –

+1

td + td:not(:last-child) – VisWebsoft

相关问题