2011-11-23 54 views
1

有一個有效的css規則(jquery僅作爲最後一次機會),允許定義一個表的所有td的樣式,只有當有第th行時。css:只有當表有所有td

更具體

<table> 
    <tr> 
    <td> 
     STYLE 1 HERE, my background color is white 
    </td> 
    </tr> 
</table> 

<table> 
    <tr> 
    <th> 
     some text 
    </th> 
    </tr> 
    <tr> 
    <td> 
     STYLE 2 HERE, my table has TH, my background color is red 
    </td> 
    </tr> 
</table> 

CSS:

th, td { 
    background-color:#ffffff 
     } 

?????? { 
     background-color:#ff0000 
     } 

有一種方法?

在此先感謝, cicciopas

回答

3

在CSS中,你不能真正做到這一點。有+「相鄰」的選擇,但這要求節點共享一個直接的共同的父母。如果你有一排混合<td></td><th></th>,那麼他們有資格獲得這個。但是你的th和td單元格在不同的行中,所以它們不共享一個共同的<tr>父級。

所以:

th + td { 
    color: red 
} 

將工作

<tr> 
    <th>Look ma, I'm red!</th> 
    <td>ooer, a header</td> 
</tr> 

,因爲它們共享相同的父<tr>,但

<tr> 
    <th>Header</th> 
</tr> 
<tr> 
    <td>Dang, not red</td> 
</tr> 

不會,因爲有兩個不同的父母爲th/td節點。

0

我覺得你的代碼是在稍有不當你的背景白色一審CSS應該是

tr,td { 
    background-color:'ffffff; 
} 

如果我爭取你想要做的是設置的<td>標籤背景在一個表其中有一個<th>然後通過純CSS你不能這樣做你想象的方式。

然而,更好的方法是將一個類追加到您想要的樣式的td標籤上,如此js小提琴演示的那樣。

http://jsfiddle.net/zYQ9h/

0

恐怕你不能,因爲我們需要「父」選擇,是這樣的:

tr < th ~ tr td { background-color: red; } 

這可以被解讀爲「查找包含任何TR一個th,並將紅色背景應用於它的「tr td兄弟姐妹」

遺憾的是,作爲<選擇沒有這樣的事情,所以我恐怕你不得不放棄一些jQuery的:

$("table:has(tr th)").find("tr td").css("background-color","red"); 

在jQuery選擇的has()不正是我們的希望> CSS選擇器將。