javascript jquery datatables undefined不是一个函数


javascript jquery datatables undefined is not a function

我正在学习jquery数据表教程,以便在单击后添加要显示的子表。

var table = $("#equipment_table").dataTable(
{
     "paging":   false,
     "ordering": false,
     "info":     false
});
$('#equipment_table tbody').on('click', 'td .pickup_button', function(){
    alert("clickee");
    var tr = $(this).closest('tr');
    var row = table.row(tr);
    if(row.child.isShown()){
        //open , close it
        row.child.hide();
        tr.removeClass('shown');
    }else {
        row.child( buildChild(tr.attr('id'))).show();
        tr.addClass('shown');
    }
});

这是php 中的html按钮定义

    echo '<td> <button class="delivery_button" id="'.$eid.'"> Delivery Status </button> </td>';
    echo '<td> <button class="pickup_button" id="'.$eid.'"> Pickup Status </button> </td>';
    echo '</tr>';
}
echo '</tbody>';

在让点击监听器工作后,我得到了这个错误

Uncaught TypeError: undefined is not a function 

var row = table.row(tr);线上

这只是一个案例问题。您应该这样定义变量table

var table = $("#equipment_table").DataTable(
{
  "paging":   false,
  "ordering": false,
  "info":     false
});

注意这是如何使用.DataTable()而不是.dataTable()

以下是数据表API文档中的内容:

注意$( selector ).DataTable()$( selector ).dataTable()之间的差异是很重要的。前者返回一个DataTables API实例,而后者返回一个jQuery对象。

由于您要返回的是jQuery对象而不是API实例,因此方法.row()是未定义的,这就是导致抛出错误的原因。

希望能有所帮助。

注意它是如何使用.DataTable((而不是.DataTable(var tr = $(this).closest('tr'); var row = table.row( tr ); if ( row.child.isShown() ) { // This row is already open - close it row.child.hide(); tr.removeClass('shown'); } else { row.child(format(row.data())).show(); tr.addClass('shown'); }