当表包含嵌套表时,选择表中某一级别上的所有td's

Select all td's at a certain level in a table when it contains nested tables

本文关键字:一级 td 嵌套 包含 选择      更新时间:2023-09-26

我有一个大致如下的表:

====================
|  td  |  td*       |
|      | |==========|
|      | |td*| td&  |
|      | |td*|======|
|      | |td*|td&|td|
|      | |   |======|
|      | |==========|
====================

我想根据元素在层次结构中的位置来选择它们;例如,我想选择所有标记为*或所有标记为&

的td

tr td:nth-child()选择器不适合我,因为有嵌套的表,所以选择器也应用于它们。

我可以使用jQuery或javascript方法。

下面是HTML布局:

<table>
    <tr>
        <td>
        Label1
        </td>
        <td name="level-2">
            <table>
                <tr>
                    <td name="level-2">Label2
                    </td>
                    <td name="level-3">
                        <table>
                            <tr>
                                <td name="level-3">Label3</td>
                                <td name="level4">Value3</td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

当我执行$('table tr td:nth-child(2)');时,它选择包含内容的整个父level-2 td,但不选择第二个二级td。

我可以建议您实现一些递归javascript函数来获取表的每个td级别,然后获取该表的所有td元素并将该td的选择器传递给函数以获取其级别。在每次迭代中,你都有它的td级。关于

只要您不为其他td使用相同的名称,这应该可以达到目的。

[name=level-num]根据"level-num"的名称进行选择(根据您想要的td的名称进行更改,您也可以根据值或id等进行搜索)。

"。每个"只是选择指定的每个元素(在本例中,每个td的名称为"level-num")。

$(td[name=level-num]).each(function(){
    $(this).something; //do something with every td that has the name "level-*Level Number*"
});