html代码:
<table id='table'>
<tr>
<td>..</td>
</tr>
</table>
使用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/
答案 0 :(得分:14)
因为<table>
的直接子女只能是<thead>
,<tbody>
或<tfoot>
(或<colgroup>
或<caption>
,但那些不包含行。)
浏览器的DOM将隐式地将迷路<tr>
包裹在<tbody>
中。 (对于不这样做的浏览器,jQuery会伪造它)
您需要撰写$('#table > tbody > tr')
。
答案 1 :(得分:3)
这是因为浏览器会自动在<tbody>
和<table>
之间插入<tr>
元素,这样行就不再是您桌子的直接子节点了。
答案 2 :(得分:2)
您的浏览器正在添加tbody
元素,因此tr
不是该表的子级。