2012-03-01 43 views

回答

7

这不是一个有效的CSS选择器;你不能把组合器放在:not()里面。

最好的办法是把标题行(包含<th>元素即<tr>元素)一个<thead>内,离开行的其余部分在表的<tbody>,并简单地使用:

table tbody tr { 
    cursor: pointer; 
} 

如果您不能修改你的HTML,单独使用CSS选择器是不可能的,特别是不需要支持IE6。改为使用JavaScript;这里是一个强制性的jQuery的例子:

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

我m *确实*有一种方法可以用CSS3做到这一点虽然... – Purag 2012-03-01 07:18:20

+0

@BoltClock,因为我们使用Gridview(一个asp.net控件)的样式,我们g几乎没有选择;(它们不会在'thead'内呈现'th' – Deeptechtons 2012-03-01 07:20:09

+0

@Deeptechtons:那么恐怕你不会在CSS选择器中获得任何地方,尤其是不支持IE6。看我的编辑。 – BoltClock 2012-03-01 07:21:03

4

假设,你的标题行会始终是第一行,你可以这样做:

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

这将选择所有tr元素first-child(如在第一个匹配元素中)。

This does not work in IE6 or any other version of IE only,IE9。

但是,如果您确实需要IE6支持,则必须使用Javascript。

+1

您可以使用'table tr + tr'替代IE7和IE8,但IE6无法实现。 – BoltClock 2012-03-01 07:27:32

+0

+1侧向思考 – Deeptechtons 2012-03-01 07:40:37

0

您可以使用<thead>标签。

在我的情况表如下所示:

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

这将适用于所有表:

tbody tr{ 
     background: yellow; 
} 

这只是其中有头表:

thead+tbody tr{ 
     background: red; 
}