admin管理员组文章数量:1136495
I am using jQuery and datatables. I want to add a class to the TR element of a particular row. I know how to find the row. The console.dir(row);
shows the row
object and that starts with a tr
element. I can't get the jQuery selector to do anything though. What am I missing?
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');
}
}
});
I am using jQuery and datatables. I want to add a class to the TR element of a particular row. I know how to find the row. The console.dir(row);
shows the row
object and that starts with a tr
element. I can't get the jQuery selector to do anything though. What am I missing?
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');
}
}
});
Share
Improve this question
edited Sep 17, 2015 at 21:33
7 Reeds
asked Sep 17, 2015 at 21:27
7 Reeds7 Reeds
2,5394 gold badges38 silver badges70 bronze badges
3
|
7 Answers
Reset to default 70$('tr', row)
is looking for a tr element in the context of row, meaning it will search for a tr element inside the row
provided as context parameter.
According to API, this should work
$(row).addClass("label-warning");
You would just have to use the 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');
}
} );
DataTable().row.add() situation:
If you want to add class when using row add function in Datatables, you could get the TR-DOM from node()
method:
var datatable = $('#resultTable').DataTable();
var trDOM = datatable.row.add( [
"Col-1",
"Col-2"
] ).draw().node();
$( trDOM ).addClass('myClass');
To set the Id attribute on the row <tr>
use:
//....
rowId: "ShipmentId",
columns: [...],
//....
To set a class name on the <tr>
use this calback
createdRow: function (row, data, dataIndex) {
$(row).addClass('some-class-name');
},
ref: https://datatables.net/reference/option/createdRow
To set a class on the <td>
use
"columns": [
{
data:"",
className: "my_class",
render: function (data, type, row) { return "..."; }
},
{
data:"",
className: "my_class",
render: function (data, type, row) { return "..."; }
},
//...
]
Something similar for 'columnDefs'
ref: https://datatables.net/reference/option/columns.className
Also you can add class to tr
by pass through json data that you send to datatable. It's enough that every json item has DT_RowClass
.
For example:
{
DT_RowAttr = new
{
attr1 = "1",
attr2 = "2"
}
DT_RowClass = "majid",
DT_RowId = "rowId"
}
In this example DT_RowId
value apply to id
attribute of any tr
tag and DT_RowAttr
value apply some custom attribute to tr
tag.
Another solution:
createdRow: function (row,data) {
var stsId = data.Ise_Sts_Cost_ID;
if (stsId == 3)
$(row).addClass('table-warning');
else if (stsId == 4)
$(row).addClass('table-success');
else
$(row).addClass('table-danger');
}
You can also use the stripeClasses option, which is used to set the row classname for the odd and even stripes.
stripeClasses: ['odd align-middle', 'even align-middle'],
In this example, I have attached the bootstrap 'align-middle' class to the original stripe classes, to vertically align the text within each row.
Ref: https://datatables.net/reference/option/stripeClasses
本文标签: javascriptjQuery datatables add class to trStack Overflow
版权声明:本文标题:javascript - jQuery datatables add class to tr - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736969529a1958115.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
$(row).addClass('label-warning');
? – Marc Commented Sep 17, 2015 at 21:34$(row).addClass(...)
? Ifrow
is atr
itself,$('tr', row)
(or$(row).find('tr')
) will only find nestedtr
s. – Kenney Commented Sep 17, 2015 at 21:35$(row).addClass("label-warning");
without success... now it works. :-} – 7 Reeds Commented Sep 17, 2015 at 21:45