J'utilise jQuery et datatables. Je veux ajouter une classe à l'élément TR d'une ligne particulière. Je sais comment trouver la rangée. La console.dir(row);
montre l'objet row
et commence par un élément tr
. Je ne peux pas obtenir le sélecteur jQuery de faire quoi que ce soit cependant. Qu'est-ce que je rate?
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)
recherche un élément tr dans le contexte de row, ce qui signifie qu'il recherchera un élément tr inside dans la variable row
fournie comme paramètre context.
Selon API , cela devrait fonctionner
$(row).addClass("label-warning");
Il vous suffira d'utiliser le createdRow
`
$('#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');
}
} );
`
Si vous souhaitez ajouter une classe lors de l'utilisation de la fonction row add dans Datatables, vous pouvez obtenir le TR-DOM à partir de la méthode node()
var datatable = $('#resultTable').DataTable();
var trDOM = datatable.row.add( [
"Col-1",
"Col-2"
] ).draw().node();
$( trDOM ).addClass('myClass');
Vous pouvez également ajouter une classe à tr
en passant par les données json que vous envoyez à datatable. Il suffit que chaque élément JSON ait DT_RowClass
.
Par exemple:
{
DT_RowAttr = new
{
attr1 = "1",
attr2 = "2"
}
DT_RowClass = "majid",
DT_RowId = "rowId"
}
Dans cet exemple, la valeur DT_RowId
s'applique à l'attribut id
de toute balise tr
et la valeur DT_RowAttr
applique un attribut personnalisé à la balise tr
.