html - 为什么在使用子选择器时 table > tr > td 不起作用?

标签 html css html-table css-selectors

我真的不明白为什么下面的选择器会按预期工作(即获取 td):

table tr td

但这个不是:

table > tr > td

tdtr 的后代,后者又是 table 的后代,但它们也是彼此的子代。因此,我认为 > 选择器也可以。

我做了两个 fiddle :

  1. child :http://jsfiddle.net/brLee/
  2. 后代:http://jsfiddle.net/brLee/1/

为什么 > 选择器在这里不起作用?

最佳答案

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

因此,您必须改为这样做:

table > tbody > tr > td

当然,如果您自己添加一个tbody 元素,您将使用相同的选择器。 spec解释何时隐式添加 tbody 否则:

Tag omission

A tbody element's start tag may be omitted if the first thing inside the tbody element is a tr element, and if the element is not immediately preceded by a tbody thead, or tfoot element whose end tag has been omitted.


1 对于正确用作application/xhtml+xml 的 XHTML 文档,情况并非如此,但是,given its XML roots .

关于html - 为什么在使用子选择器时 table > tr > td 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568859/

相关文章:

css - 为橡皮筋滚动期间可见的额外页面部分设置颜色

javascript - 如何点击使用jquery创建的td?

JavaScript 对 JSON 数据进行排序并根据键值动态生成 <ul> 和 <li> 元素

javascript - html 淡入子页面并更改 URL [更新]

javascript - CSS 变换 : translateX flash bug on iOS

Javascript使用复选框选择表格的整行(更改背景颜色)并在单击下一个复选框时取消选择

javascript - jQuery 在一个 tr 中附加两个 tds'

html - 将人造列向下扩展到粘性页脚

html - 另存为 PDF 时强制使用 HTML/CSS 在同一页面中的元素

javascript - 如何在同一位置的下一行中找出td的索引