Datatables 获取行上的数据对象单击

Datatables 获取行上的数据对象单击,datatables,jquery-datatables,Datatables,Jquery Datatables,我正在使用jquery datatables,在单击事件时获取行数据时遇到问题。如何在单击行事件时从数据表中获取数据对象 我所做的: jquery post获取json响应将json响应作为数据加载到datatable(对象数组)中 jquery,注册单击事件 datatable行当用户单击行时,需要获取 单击行 我当前的代码: function contactSearchListTable(data) { // data is array of javascript object co

我正在使用jquery datatables,在单击事件时获取行数据时遇到问题。如何在单击行事件时从数据表中获取数据对象

我所做的:

  • jquery post获取json响应将json响应作为数据加载到datatable(对象数组)中
  • jquery,注册单击事件
  • datatable行当用户单击行时,需要获取 单击行
  • 我当前的代码:

    function contactSearchListTable(data) {
      // data is array of javascript object
      console.log('contactSearchListTable()');
      $(contactSearchResultsTableElement + ' tbody').off();
      if ( $.fn.dataTable.isDataTable(contactSearchResultsTableElement) ) {
        $(contactSearchResultsTableElement).DataTable().destroy();
      }
      if (data.length == 0) {
        $(contactSearchResultsTableElement).html('');
      }
      var table = $(contactSearchResultsTableElement);
      var params = {"data":data
                    ,"info": false
                    ,"searching": false
                    ,"ordering": false
                    ,"lengthChange": false
                    ,"columns":[
                      {"data":"id","visible":false}
                      ,{"data":"name","title":"Name","class":"clickable"}
                      ,{"data":"phoneHome","title":"Home","class":"clickable"}
                      ,{"data":"phoneWork","title":"Work","class":"clickable"}
                      ]
                    };
      var dt = table.dataTable(params);
      $(contactSearchResultsTableElement + ' tbody').on('click', 'tr', function () {
        console.log(this); // <tr> html from datatable
        // **** need to get hidden ID value here, HOW?
      } );
    }
    
    函数contactSearchListTable(数据){
    //数据是javascript对象的数组
    log('contactSearchListTable()');
    $(contactSearchResultsTableElement+'tbody').off();
    if($.fn.dataTable.isDataTable(contactSearchResultsTableElement)){
    $(contactSearchResultsTableElement).DataTable().destroy();
    }
    如果(data.length==0){
    $(contactSearchResultsTableElement).html(“”);
    }
    变量表=$(contactSearchResultsTableElement);
    变量参数={“数据”:数据
    ,“信息”:错误
    ,“搜索”:false
    ,“排序”:false
    ,“长度变化”:false
    ,“列”:[
    {“数据”:“id”,“可见”:false}
    ,{“数据”:“名称”、“标题”:“名称”、“类别”:“可点击”}
    ,{“数据”:“电话主页”,“标题”:“主页”,“类别”:“可点击”}
    ,{“数据”:“电话工作”,“标题”:“工作”,“类别”:“可点击”}
    ]
    };
    var dt=表。数据表(参数);
    $(contactSearchResultsTableElement+'tbody')。在('click','tr',函数(){
    console.log(this);//来自datatable的html
    //****此处需要获取隐藏的ID值,如何获取?
    } );
    }
    
    您可以使用函数访问数据,将单击处理程序更改为:

    $(contactSearchResultsTableElement + ' tbody').on('click', 'tr', function (){
       var data = dt.api().row(this).data();
    });
    

    谢谢,我试试这个。我以前的尝试缺少“.api()”。未意识到这是必需的。从datatables更新的api不再需要api()。我使用了:dt.row(this.data()@如果您使用
    dataTable()
    将表格初始化为原始海报,则需要该表格。否则,如果使用
    DataTable()
    进行初始化,则不需要。@Gyrocode.com您的对象dt表示该表已初始化。:)因此,如果它已经初始化,则不需要dataTable()方法。没什么大不了的。只是让其他人知道我做了什么。