jquery实现递归table-tr



将文件代码保存到本地html中下载demo,引入js下载jquery.1.83.min.js看效果。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>jquery实现递归table-tr</title>
    <style type="text/css">
        /*表格*/
        .table{border-collapse: collapse; word-break: keep-all; border:1px solid Black;}
        .table.borgray{ border:1px solid #dfdfdf;}
        .table th, .table td{border: 0;padding: 5px; font-size:12px;} 
        .table.borgray th,.table.borgray td{ border:1px solid #dfdfdf;}
        .table .th{height: 20px;border: 1px solid windowtext; padding: 0 2pt 0 2pt; background-color: #fff; } 
        .table .td{border: 1px solid windowtext;} 
        .table tr.dashed>th,.table tr.dashed>td{ border-style:dashed;} 
        .table tr.dotted>th,.table tr.dotted>td{ border-style:dotted;} 
        .table .th.dashed,.table .td.dashed{ border-style:dashed;} 
        .table .th.dotted,.table .td.dotted{ border-style:dotted;} 
        .table .td.gray{color: #999;}
        .w100 {width: 100%;}
        .mag20 {margin: 20px;}
    </style>
    <script src="jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var $node_array = new Array();
            var $tr; var $tr_index; var $td; var $top; var $find_tr
            var $level; var $pcpid; var $scpid;
            var $t_level; var $t_pcpid; var $t_scpid;

            //更换零配件/重新组合零配件
            $("#btnchange").live("click", function () {

                $tr = $(this).parent().parent(); //btnchange<td<tr
                $tr_index = $tr.index();
                $td = $(this).parent(); //btnchange>td
                $level = $tr.attr("bom-level"); //层级
                $pcpid = $tr.attr("bom-pcpid"); //父级ID
                $scpid = $tr.attr("bom-scpid"); //当前ID

                //恢复所有外框,取消虚线
                $(".tbBomItem tbody:first").children('tr').removeClass("dashed"); //.tbBomItem>tbody>tr>td

                //待更换配件表格部分外框虚线显示
                $tr.addClass("dashed"); //btnchange<td<tr<td

                $node_array = new Array();
                $node_array.push($tr_index);
                FindChildNode($level, $scpid); //递归所有tr子节点,并添加class-dashed

                alert("tr-index:" + $node_array);
            });

            //重置组合
            $("#btnreset").live("click", function () {
                //恢复外框,取消虚线
                $(".tbBomItem tbody:first").children("tr").removeClass("dashed");
            });

            //递归tr,获取所有子节点并返回tr-index的Array
            //level 当前层级
            //pcpid 当前scpid
            function FindChildNode(level, pcpid) {
                var $f_tr = $(".tbBomItem tbody:first").children("tr[bom-level=" + (parseInt(level) + 1) + "][bom-pcpid=" + pcpid + "]");
                $f_tr.each(function (i) {

                    var $f_level = $(this).attr("bom-level"); //当前层级
                    var $f_scpid = $(this).attr("bom-scpid"); //当前scpid

                    $(this).addClass("dashed"); //当前行,边框虚线显示
                    $node_array.push($(this).index());

                    FindChildNode($f_level, $f_scpid); //递归所有子节点
                });
            }
        });
    </script>
</head>
<body>
<pre>
根据bom-scpid,查找所有bom-pcpid=bom-scpid的tr子节点,递归将tr-index写入Array,并返回Array
<tr bom-level="1" bom-pcpid="78618" bom-scpid="78621">BCB3-130矿用隔爆型插销连接器;index:2</tr>
<tr bom-level="2" bom-pcpid="78621" bom-scpid="78622">DXK直变器;index:3</tr>
<tr bom-level="2" bom-pcpid="78621" bom-scpid="78623">DXK控制电源;index:4</tr>
</pre>

    <table class="tbBomItem table w100 mag_b20" cellspacing="0" cellpadding="0" align="center">
        <tbody>
            <tr>
                <td class="th" colspan="11" align="center">
                    2.5T蓄电池式电机车
                </td>
            </tr>
            <tr align="center">
                <td class="th" style="width: 5%" nowrap="">
                    序号
                </td>
                <td class="th" style="width: 5%" nowrap="">
                    ChildNodes
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    BOM类型
                </td>
                <td class="th" nowrap="">
                    层级
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    产品类型
                </td>
                <td class="th" nowrap="">
                    产品名称
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    规格型号
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    计量单位
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    订货数量
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    订货单价
                </td>
                <td class="th" style="width: 10%" nowrap="">
                    合计
                </td>
            </tr>

            <tr bom-level="1" bom-pcpid="78618" bom-scpid="78621">
                <td class="td" nowrap="" align="center">
                    1
                </td>
                <td class="td bom-content" style="position: relative; color: #999;" nowrap="" align="center">
                    <a href="javascript:;" id="btnchange">获取</a>
                </td>
                <td class="td" nowrap="" align="center">
                    零部件
                </td>
                <td class="td" nowrap="" align="center">
                    1
                </td>
                <td class="td" nowrap="" align="center">
                    电器配件
                </td>
                <td class="td" nowrap="">
                    BCB3-130矿用隔爆型插销连接器
                </td>
                <td class="td" nowrap="" align="center">
                    SPEC
                </td>
                <td class="td" nowrap="" align="center">
                    件
                </td>
                <td class="td" nowrap="" align="center">
                    1
                </td>
                <td class="td" nowrap="" align="center">
                    ¥299.00
                </td>
                <td class="td" nowrap="" align="center">
                    ¥299.00
                </td>
            </tr>

            <tr bom-level="2" bom-pcpid="78621" bom-scpid="78622">
                <td class="td" nowrap="" align="center">
                    2
                </td>
                <td class="td bom-content" style="position: relative; color: #999;" nowrap="" align="center">
                    <a href="javascript:;" id="btnchange">获取</a>
                </td>
                <td class="td" nowrap="" align="center">
                    零部件
                </td>
                <td class="td" nowrap="" align="center">
                    2
                </td>
                <td class="td" nowrap="" align="center">
                    电器配件
                </td>
                <td class="td" nowrap="">
                    DXK直变器
                </td>
                <td class="td" nowrap="" align="center">
                    SPEC
                </td>
                <td class="td" nowrap="" align="center">
                    件
                </td>
                <td class="td" nowrap="" align="center">
                    1
                </td>
                <td class="td" nowrap="" align="center">
                    ¥199.00
                </td>
                <td class="td" nowrap="" align="center">
                    ¥199.00
                </td>
            </tr>

            <tr bom-level="2" bom-pcpid="78621" bom-scpid="78623">
                <td class="td" nowrap="" align="center">
                    3
                </td>
                <td class="td bom-content" style="position: relative; color: #999;" nowrap="" align="center">
                    <a href="javascript:;" id="btnchange">获取</a>
                </td>
                <td class="td" nowrap="" align="center">
                    零部件
                </td>
                <td class="td" nowrap="" align="center">
                    2
                </td>
                <td class="td" nowrap="" align="center">
                    电器配件
                </td>
                <td class="td" nowrap="">
                    DXK控制电源
                </td>
                <td class="td" nowrap="" align="center">
                    SPEC
                </td>
                <td class="td" nowrap="" align="center">
                    件
                </td>
                <td class="td" nowrap="" align="center">
                    1
                </td>
                <td class="td" nowrap="" align="center">
                    ¥100.00
                </td>
                <td class="td" nowrap="" align="center">
                    ¥100.00
                </td>
            </tr>

            <tr>
                <td class="td" colspan="2" align="center">
                    <a href="javascript:;" id="btnreset">重置Table</a>
                </td>
                <td class="td" colspan="8" align="left">
                     
                </td>
                <td class="td" align="center">
                    <label id="lblTotalPrice">
                        ¥299.00
                    </label>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值