找到直接的孩子,不再使用jQuery了

时间:2012-02-21 21:22:46

标签: javascript jquery

在搜索特定元素时如何让直系孩子?例如,我想获取表tr的{​​{1}}元素。

t1

我试过了:

    <table id="t1" bgcolor="yellow">
        <tbody>
            <tr>
                <td>This is Cell 1</td>
                <td>This is Cell 2</td>
            </tr>
            <tr>
                <td>This is Cell 3</td>
                <td>
                    <table id="t2" bgcolor="red">
                        <tbody>
                            <tr>
                                <td>This is Cell 1</td>
                                <td>This is Cell 2</td>
                            </tr>
                            <tr>
                                <td>This is Cell 3</td>
                                <td>This is Cell 4</td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>

但是,我得到4分,我不明白为什么?

Here就是一个完整的例子:

2 个答案:

答案 0 :(得分:5)

使用:

'Count = ' + $('#t1 > tbody').children('tr').length;
//  or: $("#t1 > tbody > tr").length
//  or: $("#t1")[0].rows.length; // In this case, equal to previous code.
                                 // Warning: This also includes the rows from
                                 //  the <thead> and <tfoot> sections.

您当前的代码显示4,因为表<tbody>中有两个#t1元素:

<table id="t1" bgcolor="yellow">           <-- #t1
    <tbody>                                <--- tbody
        <tr> ... </tr>                     <----- Child 1
        <tr> ...                           <----- Child 2
                    <tbody>                <--- tbody (unexpected?)
                        <tr> ... </tr>     <----- Child 3
                        <tr> ... </tr>     <----- Child 4
                    </tbody>
                </table>
            </td>
        </tr>
    </tbody>
</table>

答案 1 :(得分:1)

这是因为$('#t1 tbody')可以从两个表中获得tbody

您可以直接使用Child Selector (“parent > child”) docs

$('#t1 > tbody > tr').length;

以下是您更新的示例:http://jsfiddle.net/SvygZ/1/