jquery .children()返回错误的大小

时间:2011-02-10 07:13:06

标签: jquery size children

我刚发现孩子的体型不一致。

下面附上带警报的完整代码,以便于参考。

我获取数据的方式是错误的吗?

<body>
<table width="100" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="30" valign="top"><strong>Header Title</strong></td>
      </tr>

      <tr>
          <td height="32" valign="top">Date : <strong>01/01/2010 </strong> <br><div><b></b></div><span></span></td>
      </tr>
</table>
</body>

$("td").each(function() {
    alert($(this).children().size());   
});

//first td showing 1 direct children- <strong>
//second td showing 4 direct children- <strong> <br> <div> <span>

-----

$("tr").each(function() {
    alert($(this).children().size());   
});

//first tr showing 1 direct children - <td>
//second tr showing 1 direct children - <td>

-----

$("table").each(function() {
    alert($(this).children().size());   
});

// ERROR
// this table showing 1 direct children only.... something WRONG.
// I thought there are 2 <tr> inside this table?

2 个答案:

答案 0 :(得分:6)

原因是您的桌子中没有<tbody>。浏览器会自动为您添加,因此它成为<table>的唯一子项。

您可能有兴趣运行这段代码:

alert($('table').children()[0].tagName);

答案 1 :(得分:0)

你问的是td孩子的大小,在你的结构中,你的td只有一个孩子:强壮的标签。

在你的第二个,你问你的孩子。每个tr标签只有1 td,因此只显示1个。

试试这个:

alert($("tbody").children().length)