将数据表过滤仅应用于一个表

时间:2017-10-02 07:49:29

标签: jquery datatable

我正在使用每个类名自定义过滤。我的页面上也有两个不同的dataTable,但似乎我添加的过滤器适用于两个dataTables。我想说明它实际应用于哪一个。

$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) {
  var myRowClasses = oSettings.aoData[iDataIndex].nTr.className.split(" ");
  if($("#subplayers").is(":checked")) {
    return myRowClasses.indexOf('insub') > -1;
  } else {
    return myRowClasses.indexOf('allplayers') > -1;
  }         
});

此过滤器适用于两个表(带有tabledata的表1和带有tabledata2的表2)。如何修改此代码才能使其仅在表1上工作?

表格代码:

var table = $('#tabledata').DataTable({
  'fnCreatedRow': function (nRow, aData, iDataIndex) {
    $(nRow).attr('id', 'col' + iDataIndex+'_filter');
    if (initatedTable){
      $(nRow).addClass("insub");
      $(nRow).addClass("allplayers");
    }
  }
});

var table2 = $('#tabledata2').DataTable({
  'fnCreatedRow': function (nRow, aData, iDataIndex) {
    $(nRow).attr('id', 'col' + iDataIndex+'_filter');
   }
});

1 个答案:

答案 0 :(得分:4)

您需要像这样添加if检查过滤器功能;

$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) {
  if (settings.nTable.id === 'tabledata') {
     // filter example
  }
  else {
    // ...
  }        
});

在这个例子中,if (settings.nTable.id === 'tabledata')行可以解决问题。