为什么$(’#table> tr’)选择器不匹配? (总是返回0)

HTML代码:

..

使用jquery的js代码:

 var l1 = $('#table > tr').length; var l2 = $('#table tr').length; alert(l1+','+l2);​ 

结果:

  0,1 

为什么第一个#table > tr得到0?

你可以在这里看到现场演示: http : //jsfiddle.net/Freewind/PmsFQ/

因为

的直接子

只能是

(或

,但那些不包含行)。

浏览器的DOM将隐式地将stray

包装在

。 (对于不这样做的浏览器,jQuery伪造它)

你需要写$('#table > tbody > tr')

这是因为浏览器会自动在

之间插入

元素,这样行不再是表的直接子元素。

您的浏览器正在添加一个tbody元素,因此tr不是表的子元素。