2012-03-01 12 views

答えて

7

これは有効なCSSセレクタではありません。 :not()の中にコンビネータを置くことはできません。あなたの場合は

table tbody tr { 
    cursor: pointer; 
} 

あなたの最善の策は、<thead>内のヘッダー行(すなわち<th>要素を含む<tr>要素)を入れて、あなたのテーブルの<tbody>の行の残りの部分を残して、単にこれを使用することですあなたのHTMLを変更することはできません.CSSセレクタだけでは不可能です。特にIE6をサポートする必要はありません。代わりにJavaScriptを使用してください。ここ義務jQueryの例だ:

$('table tbody tr:not(:has(th))').css('cursor', 'pointer'); 
+0

tbody tr{ background: yellow; } 

これは、ヘッダのみを持つテーブルに対してです私は確かにCSS3でそれを行う方法がある... – Purag

+0

@BoltClock私たちはGridview(asp.netコントロール)のスタイルを使用しているのであまり選択肢がない(彼らは 'thead 'の中に' th'を表示しない) – Deeptechtons

+0

@Deeptechtons:CSSセレクタを使用して、特にIE6のサポートではどこにもいらないのではないかと心配している。私の編集を参照してください。 – BoltClock

4

あなたのヘッダー行がは常にが最初の行になりますと仮定すると、あなたはこれを行うこともできます。これは、以外のすべてのtr要素を選択

table tr:not(:first-child) { 
    background:red; 
}​ 

first-child(のように、一致する要素の最初)

このは、IE6またはIE9以外のIEの他のバージョンでは動作しません()。

しかし、IE6サポートが必要な場合は、JavaScriptを使用する必要があります。

+1

代わりに 'table tr + tr'を使ってIE7とIE8に対応できますが、IE6は手の届かないところです。 – BoltClock

+0

+1は横向きに考える – Deeptechtons

0

<thead>タグを使用するとできます。私の場合テーブルで

は、次のようになります。

<table> 
    <thead> <tr><th>... </thead> 
    <tbody> <tr><td>... </tbody> 
</table> 

これは、すべてのテーブルに適用されます:私は「

thead+tbody tr{ 
     background: red; 
} 
関連する問題