数据表-如何实现点击每一行的列?

时间:2018-08-16 11:27:37

标签: jquery datatables

我正在尝试在特定列上实现点击功能,但仅适用于第一行。

我的表是动态的,内容是基于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)'...适用于每一行?现在,它仅适用于第一行。

2 个答案:

答案 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

希望有帮助!