为什么table> tr> td在使用子select器时工作?

我真的不明白为什么下面的select按预期工作(即得到td ):

 table tr td 

但是这个不是:

 table > tr > td 

tdtr的后代, tr又是table的后代,但他们也是彼此的孩子。 因此,我认为>select器也会起作用。

我做了两个小提琴:

  1. 孩子: http : //jsfiddle.net/brLee/
  2. 后裔: http : //jsfiddle.net/brLee/1/

为什么不是>select器在这里工作?

在HTML中,浏览器隐式地添加一个tbody元素,在其中包含tr元素1 ,所以实际上, tr永远不是table的子元素。

因此,你必须这样做:

 table > tbody > tr > td 

当然,如果你自己添加一个tbody元素,你可以使用相同的select器。 该规范解释了何时隐式添加一个tbody

标记遗漏

如果tbody元素中的第一个元素是一个tr元素,并且元素之前没有tbody theadtfoot元素的结束标记被省略,则可以省略tbody元素的开始标记。


1 但是,对于正确地作为application/xhtml+xml XHTML文档,情况并非如此。

如果你想比教皇更天主教徒:)这是我所做的(因为以上都没有为我工作):

1)创build一个CSS类,将其分配给GridView的属性(例如:

 <PagerStyle CssClass="pagerNoBorder" /> 

2)定义你的CSS类,就像你的浏览器呈现的页码一样(检查浏览器中的元素并查找所有的子select器!)。 就我而言,情况就是这样:

 .pagerNoBorder > td > table > tbody > tr > td { border-width:0px !important; border-style:none; } 

如果你要说在同一时间为什么边框宽度(+!重要)和边框样式再次阅读我的答案的介绍:)。 干杯和美好的一天!