簡體   English   中英

jQuery數據表 - 如何使用filter()?

[英]jQuery datatables - how to use filter()?

我嘗試使用https://datatables.net/reference/api/filter()但沒有效果。 我想通過單擊復選框來過濾列。

碼:

var table = $('#table').DataTable();

var filteredData = table
    .column( 0 )
    .data()
    .filter( function ( value, index ) {
        return value > 4000 ? true : false;
    } );

$("#show_only_packed").click(function() {
    if ($(this).is(":checked")) {
        filteredData.draw();
    }
});

其實我用的是search()但我想了解如何使用filter()

$("#show_only_packed").click(function() {
    if ($(this).is(":checked")) {
        table.column( 3 ).search( 'Spakowano' ).draw();
    } else {
        table.column( 3 ).search('').draw();
    }
});

原因

API方法filter()經常與search()混淆,但它不會影響表。 它只根據給定的條件返回過濾的數據。

您需要使用自定義過濾

例如:

$('#show_only_packed').on('click', function(){
   if(this.checked){
      $.fn.dataTable.ext.search.push(
         function (settings, data, dataIndex){
            return (data[0] > 4000) ? true : false;
         }
      );
   }

   table.draw();

   if(this.checked){
      $.fn.dataTable.ext.search.pop();    
   }
});

DEMO

有關代碼和演示,請參閱此jsFiddle

好吧, filter() 應該與search()函數混淆。 filter()實際上不會在您的表上產生任何直接輸出 ,但可以在幕后操縱數據

假設您的表中有一個人員列表,其年齡為其中一個屬性。 你的目標是計算這一組中的老年人(超過60歲)。 然后使用這樣的過濾器很容易:

var filteredData = table.column(3)
    .data()
    .filter(function (value, index) {
    if (parseInt(value) > 60) {
        eldersCount++;
    }
});

在這里,我們將年齡列定義為第3列(基於零的索引),我們進行操作......

這是小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM