为什么不> tr> td工作时使用子选择器? [英] Why doesn't table > tr > td work when using the child selector?

查看:111
本文介绍了为什么不> tr> td工作时使用子选择器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不能真正得到为什么下面的选择器按预期工作(即得到 td ):

I can't really get why the following selector works as expected (i.e. get the td):

table tr td

/ p>

but this one doesn't:

table > tr > td

td code> tr ,后者又是 table 的后代,但它们也是对方的子对象。因此,我认为> 选择器也可以工作。

The td is a descendant of tr, which in turn is a descendant of table, but they are also children of each other. Therefore, I thought that the > selector would work too.

我做了两个fiddles:

I made two fiddles:


  1. 儿童: http://jsfiddle.net/ brLee /

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

  1. Child: http://jsfiddle.net/brLee/
  2. Descendant: http://jsfiddle.net/brLee/1/

为什么> selector在这里?

Why isn't the > selector working here?

推荐答案

在HTML中,浏览器隐式添加 tbody c> tr 元素 c>元素,其中包含 tr

In HTML, browsers implicitly add a tbody element within which to contain the tr elements1, so in reality, tr is never a child of table.

因此,您必须这样做:

table > tbody > tr > td

当然,如果添加 tbody 元素自己,你使用相同的选择器。 规范说明了 tbody 是隐式添加的,否则:

Of course, if you add a tbody element yourself, you use the same selector. The spec explains when a tbody is added implicitly otherwise:


标签省略



如果 tbody 元素中的第一个元素是 tr tbody / code>元素,如果元素不是紧挨着 tbody thead tfoot 元素

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 sub>正确地作为 application / xhtml + xml 的XHTML文档不是这种情况,但是给定其XML根


1 This is not the case for XHTML documents that are properly served as application/xhtml+xml, however, given its XML roots.

这篇关于为什么不> tr> td工作时使用子选择器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆