Javascript Datatable自定义筛选器以删除按钮上具有重复数据的行单击

Javascript Datatable自定义筛选器以删除按钮上具有重复数据的行单击,javascript,jquery,datatable,Javascript,Jquery,Datatable,我正在创建一个比较表,希望能够隐藏datatable中具有相同第2列和第3列值的所有行。我创建了一个自定义按钮,运行以下js: action: function ( e, dt, node, config ) { var rows = $("#compare").find("tbody tr"); //find all rows rows.each(function() { va

我正在创建一个比较表,希望能够隐藏datatable中具有相同第2列和第3列值的所有行。我创建了一个自定义按钮,运行以下js:

action: function ( e, dt, node, config ) {                           
   var rows = $("#compare").find("tbody tr"); //find all rows

   rows.each(function() {
     var thisRow = $(this),
     value1 = thisRow.find("#1"),
     value2 = thisRow.find("#2");

     if(value1.text() == value2.text()){
       thisRow.hide();
     }

   });
}
这确实隐藏了当前dataTable页上重复的行,但仍然显示了该页的10个结果,即使所有10个结果都隐藏了。我读了其他几个问题,大多数答案都建议对行应用自定义筛选器,因为服务器端分页

我希望按钮仅使用
value1!==值2,因此,如果有25个结果,其中20个是重复的,则该表将重新加载
,显示5个条目中的结果1到5个

先谢谢你。 数据表创建->

success: function(data){
        var Table = document.getElementById("compare");
        Table.innerHTML = "";
        $("#compare").append(data);
        $("#compare").DataTable({
            dom: 'Bfrtip',                
            buttons: [
                {
                    text: 'My button',
                    action: function ( e, dt, node, config ) {                           
                        
                        var rows = $("#compare").find("tbody tr"); //find all rows

                        rows.each(function() {
                            var thisRow = $(this),
                            value1 = thisRow.find("#1"),
                            value2 = thisRow.find("#2");

                            if(value1.text() == value2.text()){
                                $(this).hide();
                            }

                        });

                        //$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
                        //    return table.row(dataIndex).nodes().to$().attr('excluded') != 'true'
                        //})
                        
                        
                    }
                }
            ]
        });

    }

正如@charlietfl已经告诉您的那样,您应该使用jquerydatatable过滤方法

大概是这样的:

var table=$('#示例').DataTable({
订购:错误
});
$.fn.dataTableExt.afnFiltering.push(函数(设置、数据、数据索引){
如果(数据[2]==数据[3])
返回false;
其他的
返回true;
});
函数RemovedDuplicates(){
table.draw();
}

删除重复项


名称 位置 1岁 2岁 当归 首席执行官(CEO) 47 47 老虎尼克松 系统架构师 61 42 加勒特温特斯 会计 63 28 阿什顿考克斯 初级技术作者 66 66 布拉德利·格里尔 软件工程师 41 20 戴里奥斯 人事领导 35 37 杰内特·考德威尔 纽约 30 30 尤里浆果 首席营销官(CMO) 40 27 凯撒万斯 售前支持 21 22 多丽丝·怀尔德 营业员 23 23
approach将行作为DOM元素处理是错误的。您想通过插件api过滤实际数据,并让它呈现适合我的行,谢谢。现在我遇到了这样一个问题:即使在我删除了一列之后,它仍然会保留数据。因此,我将选择3个项目进行比较,比较按钮非常有效。然后我删除了一个项目,但是“比较”按钮仍然可以看到三个选项。