如何在API函数调用上下文

时间:2017-06-16 15:01:03

标签: javascript datatables

这个问题的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

1 个答案:

答案 0 :(得分:1)

老实说,'搜索':'应用'是你最好的选择,特别是如果你进入分页。如果您真的想在sum()函数中添加一些内容,可以查看其他想法:Retrieving row data after filtering JQuery Datatables