javascript - 数据表 API row().data()

标签 javascript jquery datatables

大家好,新年快乐:) 所以,我使用 dataTables 库。在他们的网站上,我找到了这个示例,其中函数必须返回被单击的表格行。

var table = $('#example').DataTable();

$('#example tbody').on( 'click', 'tr', function () {
    console.log( table.row( this ).data() );
} );

我尝试将此示例用于我的代码,但出现错误

Uncaught TypeError: aucTable.row is not a function

我的代码:

var mainTable = $('#mainTable');
$(document).ready(function () {
        mainTable.dataTable({
            'searching': false,
            'ajax': 'assets/static_data/data.json',
            'columns': [
                {
                    title: "Name",
                    data: "name"
                },
                {
                    title: "Office",
                    data: "office"
                },
                {
                    title: "Extn.",
                    data: "extn"
                },
                {
                    title: "Salary",
                    data: "salary"
                },
                {
                    title: "Start date",
                    data: "start_date"
                },
                {
                    title: "Details",
                    data: null,
                    defaultContent: "<button class='details-btn btn'>More details</button>",
                    sorting: false
                }
            ]
        });
    });

$('#mainTable').on('click', '.details-btn', function () {

        var selectedRow = aucTable.row(this).data();
        console.log(selectedRow);

        $("<div id='details-dialog'/>").dialog({
            modal: true,
            show: true,
            maxWidth: 620,
            maxHeight: 300,
            minWidth: 500,
            minHeight: 200,
            title: "Hello World"
        });
    });

有人能告诉我,为什么我会出现这个错误吗?为什么我无法获取被单击的行?

每个人的坦克。 最好的问候和乐趣。

最佳答案

我不熟悉 datatables,但是您可以尝试将其更改为以下内容:

var mainTable = null;
$(document).ready(function () {
    mainTable = $('#mainTable').dataTable({...});
});

$('#mainTable').on('click', '.details-btn', function () {
    var tr = $(this).closest('tr');
    var selectedRow = mainTable.row(tr).data();
    console.log(selectedRow);
    //...
});

请注意,我将结果存储到 mainTable 变量中的 $('#mainTable').dataTable() 调用中,以便您稍后可以引用它当调用 row() 函数时。

另一件需要注意的事情是,在您的点击处理程序中,您似乎需要从数据表中找到 tr - 调用 mainTable.row(this) 确实不会产生一行,因为 this 是被点击的按钮,而不是表格的行。

参见 this link对于一个看起来与您正在做的事情相似的例子。

关于javascript - 数据表 API row().data(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578549/

相关文章:

javascript - 是什么导致相同数量的循环具有不同的性能?

javascript - 根据滚动位置使图像可见/不可见

javascript - 在 React 中使用 Jquery 的正确方法是什么?

jquery - 搜索不适用于动态创建的行

javascript - 在 VueJs 2.0 中重新初始化数据的正确方法

javascript - 如何将js脚本与html代码隔离?

jquery - Bootstrap 多重选择(刷新)无法正常工作

javascript - 当文本输入不为空时发布数据 PHP

javascript - Datatable makeEditable() 不是一个函数?

javascript - Fuelux 向导和 formvalidation.io - 一个 ajax