Jquery数据表排序行

Jia*_*Tan 5 datatable jquery

注意:我将隐藏数据列,因此我必须使用Jquery Datatable api.

对于我的Jquery Datatable,每行旁边都有一个按钮.该按钮的目的是检索列数据.列数据将被隐藏.

对于我的按钮点击事件,这是我的代码.

    $('#Table').on('click', '.Button', function () {
        var tr = $(this).closest("tr");
        var rowindex = tr.index();
        //Get row based on index
        var rowData = $("#Table").DataTable().row(rowindex).data();
        var data = rowData.Data;
    });
Run Code Online (Sandbox Code Playgroud)

这段代码正在运行,但有一个问题.
它无法检索已排序列的数据.

例如,在排序之前,
第1行 - 索引0数据 -
第2行 - 索引1数据 - B.

排序后,
第2行 - 索引0数据 - B
行1 - 索引1数据 - A

单击数据B行按钮,数据得到:A

希望我已经清楚地解释了我的问题.谢谢!

更新的小提琴:https://jsfiddle.net/mt4zrm4b/3/

Jia*_*Goi 6

您需要传入选择器tr作为rowSelector参数row().

DOM元素可以作为行选择器给出,以从该DOM元素中选择DataTabels API中的行.当您只有DOM节点供参考时(例如在事件处理程序中),这对于从行获取数据或执行其他基于行的操作非常有用.

原因是因为如果要进行排序,DataTables不会更新的行索引.建议通过您选择行tr,如下所示:

$('#Table').on('click', '.Button', function() {
    var tr = $(this).closest("tr");

    // Get row based on tr instead.
    var rowData = $("#Table").DataTable().row(tr).data();
    var data = rowData.Data;
    alert(data);
});
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅此更新的小提琴.