2014-10-07 102 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