Jquery Datatables-如何实现每行的单击列?

Jquery Datatables-如何实现每行的单击列?,jquery,datatables,Jquery,Datatables,我试图在一个特定的列上实现一个click函数,但它只适用于第一行 我的表是动态的,内容基于web套接字的流 以下是我想做的: function initTable($table) { window.dataTable = dataTable = $table.DataTable({ data: workerObjects, columns: [ { title: "Agent", data: "friendlyName" },

我试图在一个特定的列上实现一个click函数,但它只适用于第一行

我的表是动态的,内容基于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;
}
函数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)'