我正在学习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');
}