会漂移的树懒 2020-04-08 09:35 采纳率: 33.3%
浏览 303

使用on绑定动态添加的操作列点击事件不生效

我在使用on方法绑定动态操作列时,当我绑定到动态生成元素的父节点时不生效,但绑定到动态生成元素的父节点的父节点,也就是祖先节点时可以正常生效

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <div class="ibox-content unaudit-content white-bg">
        <div class="table-responsive ">
            <table class="table table-no-bordered table-centerbody table-striped table-condensed text-nowrap" id="permissionTable"></table>
        </div>
    </div>
</body>
<script th:inline="javascript">
    (function () {
        ready(["toastr", "tableCN", "chosen", "pace", "slimscroll", "metisMenu", "treeview", "bootstrapRightFixed"], function (toastr) {
            var tableEle = $("#permissionTable");
            /**
            table中会动态从后台获取数据生成行,通过脚本动态生成操作列
            //动态添加操作列的方法
            function formatAction(value, row, index) {
                return '<div class="btn-group btn-table btn-group-sm" role="group" aria-label="">' +
                    '<a class="btn btn-white add" data-id="' + row.id + '"><i class="fa fa-pencil"></i>&nbsp;新增</a>' +
                    '<a class="btn btn-white edit" data-id="' + row.id + '"><i class="fa fa-pencil"></i>&nbsp;编辑</a>' +
                    '<button type="button" value="' + value + '" data-name="' + row.name + '" class="btn btn-white delete" role="button"><i class="fa fa-trash"></i>&nbsp;删除</button>' +
                    ' </div>'
            }
            **/
            //但是为什么绑定table节点动态操作按钮的点击事件不生效?
            /*
                //错误方法一
                $("table.table").on("click", ".edit", function () {
                    console.log("edit");
                    var id = $(this).data("id");
                    var pageUrl = BASE_PATH + "/admin/permission/edit/" + id;
                    console.log(pageUrl);
                    // GY.layer.ajaxIframe({title: "修改资源", content: pageUrl});
                });
                //错误方法二
                $("#permissionTable").on("click", ".edit", function () {
                    console.log("edit");
                    var id = $(this).data("id");
                    var pageUrl = BASE_PATH + "/admin/permission/edit/" + id;
                    console.log(pageUrl);
                    // GY.layer.ajaxIframe({title: "修改资源", content: pageUrl});
                });
            */
            //绑定到table父节点的div却可以生效?
            $("div.table-responsive").on("click", ".edit", function () {
                console.log("edit");
                var id = $(this).data("id");
                var pageUrl = BASE_PATH + "/admin/permission/edit/" + id;
                console.log(pageUrl);
                // GY.layer.ajaxIframe({title: "修改资源", content: pageUrl});
            })

        })
    })(this);
</script>
</html>

请各路前端大神解惑,谢谢

  • 写回答

2条回答

  • 代码的灵魂是bug! 2020-04-08 09:45
    关注

    遇到过这种情况,我是把on事件也放到数据回调里面就执行正常了

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?