Jquery DataTables按名称访问列或从服务器返回额外数据

Jquery DataTables按名称访问列或从服务器返回额外数据,jquery,datatables,Jquery,Datatables,我正试图使我的DataTables功能通用化,这样它将适用于我网站上的任何表 我想根据“状态”列给行的背景上色,该列将出现在我的所有表中。目前我唯一可以给行着色的方法是通过索引访问数据数组。我需要一种按名称而不是按数组索引访问列的方法 下面的代码可以工作,根据aData[6]中的值添加“绿色”或“红色”类,但我是否可以在aData['status']中查找该值 “”处的php返回一个数组: return array('data' => array(...., ..., ....)); j

我正试图使我的DataTables功能通用化,这样它将适用于我网站上的任何表

我想根据“状态”列给行的背景上色,该列将出现在我的所有表中。目前我唯一可以给行着色的方法是通过索引访问数据数组。我需要一种按名称而不是按数组索引访问列的方法

下面的代码可以工作,根据
aData[6]
中的值添加“绿色”或“红色”类,但我是否可以在
aData['status']
中查找该值

“”处的php返回一个数组:

return array('data' => array(...., ..., ....));
jQuery初始化数据表:

$('.ajax-data-table').each(function(index) {
    var table = this.id;
    // Create ajax table with datatables
    $(this).dataTable({
        processing: true,
        ajax: {
            url: 'https://www.example.com/table-data',
            data: function (d) {
                d.table = table;
            }
        },
        deferRender: true,
        responsive: true,
        columnDefs: [
            {targets: ['no-sort'], bSortable: false},
            {targets: ['no-visible'], className: 'never'}
        ],
        fnRowCallback: function(nRow, aData, iDisplayIndex) {
            if (aData[6] == "W") $(nRow).addClass('working');
            else if (aData[6] == "C") $(nRow).addClass('closed');
            return nRow;
        }
    });
});
另一种可能是从服务器传回一些额外的数据,这样我就可以告诉fnRowCallback函数在哪个列中查找状态

如果我从服务器传回一个数组,比如
returnarray('data'=>array(………………),'extra'=>6)如何访问fnRowCallback中的“额外”数据

更新 我已设法确认我可以从服务器传回额外数据,如上所述,我可以看到使用fnInitComplete:

fnInitComplete: function(oSettings, json) {
      console.log(json.extra);
}

是否可以访问
fnRowCallback
中的json.extra数据?如果有办法的话,我可以使用
aData[json.extra]

为了实现这一点,我最终找到了一个简单的解决方法

因此,对于任何寻求类似解决方案的人

  • 在表中创建了一个隐藏列
  • 为隐藏列传回键为“class”的关联数组: 例如,
    array('class'=>'myClass')
  • 将以下内容添加到datatables javascript中,以查找具有键名为“class”的关联数组的任何列,并将值添加到表行类中:
  • fnRowCallback:函数(nRow、aData、iDisplayIndex){
    var className=$.map(数据,函数(元素,索引){
    if(elem&&elem.class)返回elem.class;
    });
    //将类添加到行
    如果(className.length>0)$(nRow.addClass(className.join(“”));
    返回nRow;
    }