Ответ 1
$('tr', row)
ищет tr-элемент в контексте строки, то есть он будет искать tr-элемент внутри row
представленный как параметр контекста.
Согласно API, это должно работать
$(row).addClass("label-warning");
Я использую 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');
}
}
});
$('tr', row)
ищет tr-элемент в контексте строки, то есть он будет искать tr-элемент внутри row
представленный как параметр контекста.
Согласно API, это должно работать
$(row).addClass("label-warning");
Вам просто нужно использовать созданный ряд
$('#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');
}
} );
Если вы хотите добавить класс при использовании функции добавления строк в Datatables, вы можете получить метод TR-DOM из node()
:
var datatable = $('#resultTable').DataTable();
var trDOM = datatable.row.add( [
"Col-1",
"Col-2"
] ).draw().node();
$( trDOM ).addClass('myClass');
Также вы можете добавить класс в 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
.