Javascript datatables-在函数作用于该行时更改行颜色

Javascript datatables-在函数作用于该行时更改行颜色,javascript,datatables,Javascript,Datatables,我有一个datatable,其中包含一些数据,包括一个布尔“status”列 我根据这个“状态”给行上色,并根据它显示一个用户友好的文本 每行中还有一个按钮,用于调用函数(调用ajax调用,在服务器上执行某些工作),这可能会导致状态更改。此调用后,将重新加载表数据,并显示新状态 由于对服务器的调用可能需要几秒钟的时间,因此我希望显示一个中间状态颜色和消息,例如“等待”,并将行颜色更改为黄色,然后在重新加载数据时,颜色和文本将返回到与状态匹配的状态 以下是我到目前为止所做的,缩短为仅显示必要的部分

我有一个datatable,其中包含一些数据,包括一个布尔“status”列

我根据这个“状态”给行上色,并根据它显示一个用户友好的文本

每行中还有一个按钮,用于调用函数(调用ajax调用,在服务器上执行某些工作),这可能会导致状态更改。此调用后,将重新加载表数据,并显示新状态

由于对服务器的调用可能需要几秒钟的时间,因此我希望显示一个中间状态颜色和消息,例如“等待”,并将行颜色更改为黄色,然后在重新加载数据时,颜色和文本将返回到与状态匹配的状态

以下是我到目前为止所做的,缩短为仅显示必要的部分:

$(document).ready(function(){
table = $('#table').dataTable(
    {
        'columns' : [ {
            title : 'Status',
            data : 'running'
        }, {
            title : 'Name',
            data : 'name'
        }, {
            title : 'Do Something',
            data : 'running'
        } ],
        'fnRowCallback' : function(row, data, dataIndex, dataIndexFull) {
            if(data.running) {
                $(row).css('background-color', '#DEF1D7');
            } else {
                $(row).css('background-color', '#F0DDDD');
            }
        },
        'columnDefs' : [{
            'targets' : 0,
            'searchable' : false,
            'orderable' : true,
            'className' : 'dt-body-center',
            'render' : function(data, type, full, meta) {
                if (data) {
                    return "Running";
                } else {
                    return "Halted";
                }
            }
        }, {
            'targets' : 2,
            'searchable' : false,
            'orderable' : false,
            'className' : 'dt-body-center',
            'render' : function(data, type, full, meta) {
                var button = document.createElement("button");
                button.innerHTML = "Do something";
                button.setAttribute("onclick", "doSomething(\'" + full.name + "\')");
                if (data) {
                    button.disabled = false;
                } else {
                    button.disabled = true;
                }
                return button.outerHTML;
            }
        } ],
    });

    loadData();
});

function loadData() {
$.ajax({
    type : 'GET',
    url : '/url/to/my/data',
    contentType : false,
    processData : false,
    data : null,
    success : function(retData) {
        table.fnClearTable();
        // Add updated data 
        table.fnAddData(retData);
        // Redraw table
        table.fnDraw();
    },
        error : function(request, status, error) {
        // Clear table 
        table.fnClearTable();
        // Redraw table
        table.fnDraw();
    }
});
}

doSomething(name){
    //do some stuff that takes some time

    //after that's done
    loadData();
 }

在按下按钮时调用的doSomething方法中,如何更改行的颜色?我是否可以在
fRowCallback
中以某种方式在行上设置一个id,并在
doSomething
中使用该id?

如何处理如下所示的onclick

$('#example tbody').on( 'click', 'button', function () {
    $(this).parents('tr').attr('style','background-color: red')
});
可能您可以在刷新数据时绑定onclick,单击按钮后,可以获取其父tr元素并更改其颜色


让我知道这是否有效

下面如何处理onclick

$('#example tbody').on( 'click', 'button', function () {
    $(this).parents('tr').attr('style','background-color: red')
});
可能您可以在刷新数据时绑定onclick,单击按钮后,可以获取其父tr元素并更改其颜色


让我知道这是否有效

我尝试过这个想法,但出于某种原因,我得到了“table.row不是一个函数”,这没有任何意义,但它确实存在。无论如何,我没有使用这一行。编辑答案。我试过这个想法,但出于某种原因,我得到了“table.row不是一个函数”,这没有任何意义,但它确实存在。无论如何,我没有使用这一行。编辑答案。你能查一下吗