2012-12-20 66 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

相關問題