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><tfoot><colgroup><caption>

<tr>ブラウザのDOMは、迷子を暗黙的にラップし<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 に答える