javascript - 用递归方式怎么实现多层父子关系的元素进行删除?

查看:389
本文介绍了javascript - 用递归方式怎么实现多层父子关系的元素进行删除?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

功能代码:
点击删除按钮触发事件:
备注:$(".btn_del")是删除按钮
需求:只要删除当前的行是有子集的数据,那么就一并删除子集的数据。
现在的关联关系的就是父级有id,子集有pid,一个或多个层级都是对应的。
用循环写不知道感觉太麻烦了,不知道用递归是否可以解决这类问题,理解意思的朋友能不能说说你们的思路?
这段代码应该怎么修改?

// 删除单项或父子级关系的数据
$(".btn_del").click(function() {
    var single_row = $(this).closest('tr');
    console.info($(this).closest('tbody').find('tr'));
    var arr_tr = $(this).closest('tbody').find('tr');
    var cur_trId = $(this).closest('tr').attr('id');
    console.log(cur_trId);
    // var data = single_row.attr('data');
    // console.info(JSON.parse(data));
    var cv = single_row.attr('hv');
    var tr_id = single_row.attr('id');
    var tr_pid = single_row.attr('pid');
    console.log(cv);
    if (cv == 1) {
        var stit = '审核';
        var scont = '该分类包含的自己分类也会被全部删除 您确定要删除该和子级分类吗?';
        layer.confirm(scont, {
            icon: 0,
            title: stit,
            shade: false
        }, function(index) {
            //todo 删除id和pid关联的数据方法
            //先发请求调用接口再做删除
            //用递归解决多层级删除
            arr_tr.each(function() {
                // console.log($(this).attr('id'));
                // console.log($(this).attr('pid'));
                var cid = $(this).attr('id');
                var Pid = $(this).attr('pid');
                console.log(Pid);
                if (cur_trId == Pid) {
                    // $(this).remove();
                    // console.info($(this));
                    console.log("ffffff");
                }
            });
            layer.msg('已删除!', {
                icon: 1,
                time: 1000
            });
        });
    } else {
        layer.confirm('确认要删除吗?', {
            icon: 0,
            title: '警告',
            shade: false
        }, function(index) {
            //todo 删除id和pid关联的数据方法
            //先发请求调用接口再做删除
            single_row.remove();
            layer.msg('已删除!', {
                icon: 1,
                time: 1000
            });
        });
    }

});

解决方案

用通配符写选择器呗
比方说你要删除 TR_0
先删除 $('tr[id^=TR_0_]').remove();
再删除 $('tr[id=TR_0]').remove();

这篇关于javascript - 用递归方式怎么实现多层父子关系的元素进行删除?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆