Jquery Datatables-如何实现每行的单击列?
我试图在一个特定的列上实现一个click函数,但它只适用于第一行 我的表是动态的,内容基于web套接字的流 以下是我想做的:Jquery Datatables-如何实现每行的单击列?,jquery,datatables,Jquery,Datatables,我试图在一个特定的列上实现一个click函数,但它只适用于第一行 我的表是动态的,内容基于web套接字的流 以下是我想做的: function initTable($table) { window.dataTable = dataTable = $table.DataTable({ data: workerObjects, columns: [ { title: "Agent", data: "friendlyName" },
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;
}
函数initTable($table){
window.dataTable=dataTable=$table.dataTable({
数据:WorkerObject,
栏目:[
{标题:“代理”,数据:“friendlyName”},
{标题:“倾听”,
呈现:函数(数据、类型、行){
如果(!row.task){return'-'}
返回``
}
},
],
页长:25
});
// https://github.com/benjamine/jLiveTime
$table.livetime();
$table.on('click','td:eq(1)'上的函数(事件){
控制台日志('bang';
});
返回数据表;
}
在特定的流中,我运行dataTable.rows().invalidate().draw();
来更新表,因为对象WorkerObject已经更新
如何使$table.on('click','td:eq(1)')对每一行都有效?现在,它只对第一行有效。使用
$table.on('click', 'td:nth-child(1)', function (event) {
我对您的代码的理解是,它当前将在表中的第一个TD上触发(eq是表中所有TD的集合)您可以使用以下代码执行相同操作
$table.find('tbody').on('click', 'tr', function () {
var data = dataTable.row(this).data();
alert( 'You clicked on '+data[0]+'\'s row' );
} );
如原始文档中所述。请通过以下链接进行参考
希望有帮助!$table.on('click','td'
..,因为'td:eq(1)
仅表示第一个td
编号。td:eq(1)表示列索引1,而不是行1。eq并不表示列索引1。它表示元素在集合中的位置。在这种情况下,您不知道集合是一行中所有TDs的集合、表中所有TDs的集合,甚至只是被单击的特定TD。请尝试$table.on('click','TD:n子(1)'