我正在尝试在特定列上实现点击功能,但仅适用于第一行。
我的表是动态的,内容是基于Web套接字的流的。
这就是我想要做的:
function initTable($table) {
window.dataTable = dataTable = $table.DataTable({
data: workerObjects,
columns: [
{ title: "Agent", data: "friendlyName" },
{ title: "Listen",
render: function(data, type, row) {
if ( !row.task ) { return '-' }
return `<a href='#' id="join_${row.task.sid}"><i id="${row.task.sid}" class="fa fa-play-circle"></i></a>`
}
},
],
pageLength: 25
});
// https://github.com/benjamine/jLiveTime
$table.livetime();
$table.on('click', 'td:eq(1)', function (event) {
console.log('bang';
});
return dataTable;
}
在特定的流程中,我运行dataTable.rows().invalidate().draw();
来更新表,因为对象workerObjects已更新。
如何使$table.on('click', 'td:eq(1)'...
适用于每一行?现在,它仅适用于第一行。
答案 0 :(得分:0)
使用
$table.on('click', 'td:nth-child(1)', function (event) {
我对您的代码的理解是,它目前实际上会在表中的第一个TD上触发(即表中所有TD的集合)
答案 1 :(得分:0)
您可以使用以下代码执行相同的操作
$table.find('tbody').on('click', 'tr', function () {
var data = dataTable.row(this).data();
alert( 'You clicked on '+data[0]+'\'s row' );
} );
如原始文档本身中所述。请通过下面的链接作为参考,
https://datatables.net/examples/advanced_init/events_live.html
希望有帮助!