2014-10-07 97 views
5

我正在使用数据表与自定义服务器端过滤,搜索和排序......为什么columnFilter()返回一个错误“TypeError:$(...)。 。数据表(...)columnFilter不是一个函数 “jquery datatables:columnFilter()不是函数错误

这是我如何使用columnFilter:

var table = $('#item-table').DataTable({ 
    ajax: '<?= site_url("price_update"); ?>', 
    serverSide: true, 
    processing: true, 
    paging: true 
}).columnFilter(); 

我无码” .columnFilter()”工作正常。

+0

DataTable()或dataTable()? – Mate 2014-10-07 06:40:28

+0

DataTable()与大写D – 2014-10-07 06:41:11

+0

版本? 1.10.2? – Mate 2014-10-07 06:42:18

回答

10

必须当使用columnFilter时使用“oldschool”dataTable()构造函数。概念证明:

工作不,会产生同样的错误作为问题:
columnFilter与1.10.x与DataTable()实例 - >http://jsfiddle.net/87kam74q/

工作
columnFilter 1.10。 x例示dataTable() - >http://jsfiddle.net/LvL4vm8e/

原因是,columnFilter假定它正在处理“旧”jQuery对象,而不是新的API对象。虽然,你仍然可以通过.api()方法访问新的API,例如:

var table = $('#example').dataTable(); 
table.api().search('test').draw(); 

如果你不想去通过table.api()使用新的AP,并坚持使用DataTable(),可以实现 - >http://jsfiddle.net/qbr01oya/

var table = $('#example').DataTable(); 
$('#example').dataTable().columnFilter({ 
    sPlaceHolder : 'head:before', 
    aoColumns: [ { type: "text"}, 
       { type: "text"}, 
       { type: "text"}, 
       { type: "text"}, 
       { type: "text"} 
       ] 
}); 

小提琴:通过放弃链接相同。这不会导致dataTable被初始化两次(dataTables检查它)。 DataTable()或dataTable()?(

+0

感谢您为我清除这些数据。那么现在用非“oldschool”数据表完成这个工作的唯一方法就是在这个时候为它做一个API。 – 2014-10-08 11:32:20

+0

@ChristianBurgos,是的 - 但如果你会放弃点链,你可以同时做。查看更新的答案。 – davidkonrad 2014-10-08 11:56:52

+0

这适用于服务器端处理吗? – 2014-10-09 02:23:36