遍历和“选择”jQuery DataTables行

3
我正在使用jQuery DataTables 1.10.3创建一个表格,其中包含从Web服务获取的JSON数据。 数据与我的应用程序页面上的其他元素链接在一起,因此当用户在一个元素中选择数据点时,DataTable应该更新并“选择”互补行(仅通过向行的<tr>标签添加active类)。根据文档,似乎可以通过以下方式轻松实现此目标:
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个回答

1

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

或者可以基于数据值进行行选择吗?

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

这个运行几乎瞬间完成,所以它处理了我的用例,但我仍然想知道更一般的迭代行的最佳方法是什么。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接