jQuery datatables добавляет класс в tr

Я использую jQuery и datatables. Я хочу добавить класс в элемент TR определенной строки. Я знаю, как найти строку. console.dir(row); показывает объект row и начинается с элемента tr. Я не могу заставить селектор jQuery ничего сделать. Что мне не хватает?

table = $('#resultTable').DataTable({
    aaSorting: [],
    ajax: {...},
    columnDefs: [...],
    createdRow: function (row, data, index) {
        //
        // if the second column cell is blank apply special formatting
        //
        if (data[1] == "") {
            console.dir(row);
            $('tr', row).addClass('label-warning');
        }
    }
});

Ответы

Ответ 1

$('tr', row) ищет tr-элемент в контексте строки, то есть он будет искать tr-элемент внутри row представленный как параметр контекста.

Согласно API, это должно работать

$(row).addClass("label-warning");

Ответ 2

Вам просто нужно использовать созданный ряд

$('#data-table').DataTable( {
    createdRow: function( row, data, dataIndex ) {
        // Set the data-status attribute, and add a class
        $( row ).find('td:eq(0)')
            .attr('data-status', data.status ? 'locked' : 'unlocked')
            .addClass('asset-context box');
    }
} );

Ответ 3

Состояние DataTable(). Row.add():

Если вы хотите добавить класс при использовании функции добавления строк в Datatables, вы можете получить метод TR-DOM из node():

var datatable = $('#resultTable').DataTable();

var trDOM = datatable.row.add( [
    "Col-1",
    "Col-2"
] ).draw().node();

$( trDOM ).addClass('myClass');

Ответ 4

Также вы можете добавить класс в tr путем передачи данных json, которые вы отправляете в datatable. Достаточно того, что каждый элемент json имеет DT_RowClass.
Например:

{

    DT_RowAttr = new
    {
       attr1 = "1",
       attr2 = "2"
    }
    DT_RowClass = "majid",
    DT_RowId = "rowId"

}  

В этом примере значение DT_RowId применяется к атрибуту id любого тега tr а значение DT_RowAttr применяет некоторый пользовательский атрибут к тегу tr.