8

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/

4

3 回答 3

14

因为 a 的直接子级<table>只能是<thead>, <tbody>, or <tfoot>(或<colgroup>or <caption>,但不包含行)。

浏览器的 DOM 会<tr><tbody>. (对于不这样做的浏览器,jQuery 会伪造它)

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

于 2012-05-06T01:56:54.473 回答
3

这是因为浏览器会自动在你的和之间插入<tbody>元素,这样行就不再是你的表的直接子元素。<table><tr>

于 2012-05-06T01:57:50.003 回答
2

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

于 2012-05-06T01:57:58.947 回答