为什么$(’#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
不是表的子元素。