繁体   English   中英

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()

这是DataTablesAPI文档中所说的内容:

重要的是要注意$( 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'); } 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'); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM