我正在使用jQuery DataTables 1.10.3创建一个包含从Web服务获取的JSON数据的表。数据链接到我的应用程序页面上的其他元素,这样当用户在一个元素中选择数据点时,DataTable应该更新并选择'免费行(只需将active
类添加到行<tr>
标记)。鉴于documentation,似乎可以通过以下方式轻松完成:
var table = $("#my-table").DataTable();
table.rows().each(function(r){
if (r.data().category == 'XYZ'){
r.node().to$().addClass("active");
}
});
但这不起作用,因为.rows()
返回行索引数组而不是行对象。相反,我实现了这个:
var table = $("#my-table").DataTable();
table.rows().indexes().each(function(i){
var r = table.row(i);
if (r.data().category == 'XYZ'){
r.node().to$().addClass("active");
}
});
考虑到表中记录的数量相对较少(3000行约3秒),这种方法很有效,但速度极慢。有没有更好的方法来迭代我缺少的DataTable行?或者是否可以根据数据值进行行选择?有关.rows()
返回API对象的文档不正确吗?
答案 0 :(得分:1)
好吧,我找到了第二个问题的答案:
或者是否可以根据数据值进行行选择?
var table = $("#my-table").DataTable();
table.rows(function(idx, data, node){
return data.category == 'XYZ' ? true: false;
}).nodes().to$().addClass("active");
这几乎是立即运行,所以它处理我的用例,但我仍然想知道以更一般的方式迭代行的最佳方法是什么。