带有行单击重定向的 Jquery 数据表复选框选择

问题描述

我有一个带有数据表选择插件的 Jquery 数据表 - https://www.gyrocode.com/projects/jquery-datatables-checkboxes/

我正在使用复选框来多选行,这是设置:

            "select": {
                'style': 'multi','selector': 'td:first-child'    //only checkBox can select row
            },

这很好用。只有当我单击复选框时,它才会选择该行。接下来我需要的是当我点击行的其余部分(除了复选框之外的任何其他地方)时,我需要根据点击的行转到一个特殊的 URL。我添加了这个:

        $('#MyTable tbody').on('click','tr',function () {
            console.log(table.row(this).data()["Id"]);
        });

这也很有效,因为我可以获得所点击行的唯一 Id 值。

现在的问题是行点击胜过复选框选择。换句话说,即使我点击复选框,它仍然会重定向用户。我需要让复选框不成为行点击的一部分,我该怎么做?复选框是第一列,这是我的列定义的一部分:

                "columnDefs": [
                {
                    'targets': 0,'checkBoxes': {
                        'selectRow': true
                    }
                },

我也尝试查看 tr hasClass('selected'),但是选择动作发生在点击动作之后,因此,一开始总是假的。

解决方法

我已经找到了答案:

  $('#MyTable tbody').on('click','tr td:not(:nth-child(1))',function () {
        console.log(table.row(this).data()["Id"]);
    });

这将排除行点击事件中的第一列。