迭代并“选择”jQuery DataTables行

时间:2014-11-06 21:37:01

标签: javascript jquery datatables

我正在使用jQuery DataTables 1.10.3创建一个包含从Web服务获取的JSON数据的表。数据链接到我的应用程序页面上的其他元素,这样当用户在一个元素中选择数据点时,DataTable应该更新并选择&#39;免费行(只需将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对象的文档不正确吗?

1 个答案:

答案 0 :(得分:1)

好吧,我找到了第二个问题的答案:

  

或者是否可以根据数据值进行行选择?

var table = $("#my-table").DataTable();
table.rows(function(idx, data, node){
    return data.category == 'XYZ' ? true: false;
}).nodes().to$().addClass("active");

这几乎是立即运行,所以它处理我的用例,但我仍然想知道以更一般的方式迭代行的最佳方法是什么。