JSFiddle 对于这个问题:http://jsfiddle.net/nhg5ej4s/
我使用1.10.15版本的Datatables。
我在 API 中注册了这个 sum()
函数:
$.fn.dataTable.Api.register('sum()', function () {
var data = this.flatten().toArray();
return data.reduce(function (a, b) {
return (a * 1) + (b * 1); // cast strings
}, 0);
});
当我需要使用这个功能时,例如在 drawCallback
中页脚中更新总计的选项(请参阅 JSFiddle 了解上下文):
var table = $('#example').DataTable({
drawCallback: function (settings) {
var api = this.api();
$(api.column(5).footer()).html('Total: ' + api.column(5).data().sum());
}
});
该函数有效,但是当我通过任何搜索对表应用过滤器时,传递给 sum()
的值将采用所有行,而不是通过搜索过滤的行。
有办法在 sum()
函数中识别搜索上下文吗?
PS:在编写此问题时,我意识到我可以在列调用中传递一个选项,该选项将仅过滤搜索的行:api().column(5, {'search' : 'applied'}).data().sum()
但我决定保留这个问题,以了解是否有办法在 sum()
代码中执行此操作。 JSFidlle with this update
最佳答案
老实说,“搜索”:“应用”是你最好的选择,特别是当你进入分页时。如果您确实想在 sum() 函数中添加一些内容,您可以查看此内容以获取其他想法: Retrieving row data after filtering JQuery Datatables
关于javascript - 如何在 API 函数调用上下文中从数据表中获取搜索到的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592425/