JQueryとデータテーブルを使用しています。特定の行の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要素を検索しますinsideコンテキストパラメータとして提供されたrow
。
[〜#〜] api [〜#〜] によると、これは動作するはずです
$(row).addClass("label-warning");
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');
}
} );
Datatablesで行追加機能を使用するときにクラスを追加する場合は、node()
メソッドからTR-DOMを取得できます。
var datatable = $('#resultTable').DataTable();
var trDOM = datatable.row.add( [
"Col-1",
"Col-2"
] ).draw().node();
$( trDOM ).addClass('myClass');
また、datatableに送信するJSONデータをパススルーすることにより、tr
にクラスを追加できます。すべてのjsonアイテムにDT_RowClass
があれば十分です。
例:
{
DT_RowAttr = new
{
attr1 = "1",
attr2 = "2"
}
DT_RowClass = "majid",
DT_RowId = "rowId"
}
この例では、DT_RowId
値がid
タグのtr
属性に適用され、DT_RowAttr
値がtr
タグにカスタム属性を適用します。