我正在使用自定义服务器端过滤,搜索和排序的数据表...为什么columnFilter()返回错误" TypeError:$(...)。DataTable(...)。columnFilter不是一个功能"
这是我如何使用columnFilter:
var table = $('#item-table').DataTable({
ajax: '<?= site_url("price_update"); ?>',
serverSide: true,
processing: true,
paging: true
}).columnFilter();
我的代码没有&#34; .columnFilter()&#34;工作正常。
答案 0 :(得分:10)
使用dataTable()
时,必须使用“oldschool”columnFilter
构造函数。概念证明:
不起作用,会产生与问题相同的错误:
使用DataTable()
实例化1.10.x的columnFilter - &gt;的 http://jsfiddle.net/87kam74q/ 强>
有效:
使用dataTable()
实例化1.10.x的columnFilter - &gt;的 http://jsfiddle.net/LvL4vm8e 强> /
原因是,columnFilter
假设它正在处理“旧的”jQuery对象,而不是新的API对象。但是,您仍然可以通过.api()
方法访问新API,例如:
var table = $('#example').dataTable();
table.api().search('test').draw();
如果你不想通过table.api()
使用新的AP,并坚持使用DataTable()
,你可以通过放弃链接来实现同样的目标:
var table = $('#example').DataTable();
$('#example').dataTable().columnFilter({
sPlaceHolder : 'head:before',
aoColumns: [ { type: "text"},
{ type: "text"},
{ type: "text"},
{ type: "text"},
{ type: "text"}
]
});
小提琴 - &gt;的 http://jsfiddle.net/qbr01oya/ 即可。这不会导致dataTable被初始化两次(dataTables检查它)。