JQuery数据表根据内容更改单元格样式,而无需重新绘制整个表格

时间:2017-01-15 08:52:17

标签: javascript jquery css

我有jquery数据表,并希望根据单元格内容设置样式属性(颜色和背景颜色)。 表格动态变化,因此每次更改单元格内容时都无法重绘整个表格。

有办法做到这一点吗?

我考虑使用column rendering,每次编辑单元格时都会调用它,并且可以控制数据显示,但我不确定这是最好的方法。另外渲染回调获取单元格数据而不是td。

谢谢!

从rowDrawCallback调用时,我使用了:

"fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {

        if (!aData || aData.length == 0) return;

        if(columns.indexOf(INDEX_STAT) >= 0) {
            var state = aData[INDEX_STAT].state;
            var exitCode = aData[INDEX_STAT].exitCode;
            var statIndex = columns.indexOf(INDEX_STAT);
            var statSelector = $('td', nRow).eq(statIndex);

            if (!state)
                log("undef state");

            ResultsModule.updateStatusCellInfo(statSelector, state, exitCode);
        } 
}



var ResultsModule = {
 updateStatusCellInfo: function(selector, state, exitCode){        
    var mapper = ResultsModule.getTestResults(state, exitCode).map;

    var currentStatusString = mapper.status;
    var currentStatusColor = mapper.color;
    var currentStatusBgColor = mapper.bgcolor;

    if (currentStatusString) selector.text(currentStatusString); // updating status as text
    else selector.text(Status.None);
    if (currentStatusColor) selector.css('color',currentStatusColor); // seting status color from mapper
    if (currentStatusBgColor) selector.css('background-color',currentStatusBgColor); // seting status color from mapper
 }
}

1 个答案:

答案 0 :(得分:0)

我用这个column.render,在绘制之前调用了单元格。 也许它不是功能目标,但它完成了工作:)。

获得td可以通过以下方式完成:

 var cell = meta.settings.aoData[meta.row].anCells[meta.col];
 var statSelector = $(cell);
 selector.css('color', "");
 selector.css('background-color',"");

有关从渲染函数中获取DOM单元格的更多信息,请参阅this discussion