Javascript jQuery datatables使用特定类筛选行

Javascript jQuery datatables使用特定类筛选行,javascript,jquery,search,datatable,datatables,Javascript,Jquery,Search,Datatable,Datatables,我正在处理一个jquerydatatable项目,在这个项目中,我需要根据特定的行类过滤数据。我在根据条件创建行时向行中添加类。我试图找到一种方法,让我的用户单击一个按钮,该按钮将应用一个只显示包含特定类的行的过滤器 我尝试过几种不同的解决方案,但似乎无法奏效。有人知道如何正确地做到这一点吗 这是你的电话号码 $(“#表”).DataTable({ 数据:数据, 栏目:[ { “数据”:“项目1”, “渲染”:函数(数据、类型、行){ 如果(类型==‘显示’){ 返回“+数据+”; }else

我正在处理一个jquerydatatable项目,在这个项目中,我需要根据特定的行类过滤数据。我在根据条件创建行时向行中添加类。我试图找到一种方法,让我的用户单击一个按钮,该按钮将应用一个只显示包含特定类的行的过滤器

我尝试过几种不同的解决方案,但似乎无法奏效。有人知道如何正确地做到这一点吗

这是你的电话号码

$(“#表”).DataTable({
数据:数据,
栏目:[
{ 
“数据”:“项目1”,
“渲染”:函数(数据、类型、行){
如果(类型==‘显示’){
返回“+数据+”;
}else if(type==='sort'){
返回数据;
}else if(类型==='filter'){
返回数据;
}否则{
返回数据;
}
}
},
{ 
“数据”:“项目2”,
“渲染”:函数(数据、类型、行){
如果(类型==‘显示’){
返回“+数据+”;
}else if(type==='sort'){
返回数据;
}else if(类型==='filter'){
返回数据;
}否则{
返回数据;
}
}
}   
],
createdRow:函数(行、数据、索引){
如果(data.item2=='这是项目2-满足条件1'){
$(行).addClass('condition1');
}
如果(data.item2=='这是第2项-满足条件2'){
$(行).addClass('condition2');
}
}
});
$(“#btn筛选器”)。在('click',function()上{
////仅显示包含类条件1的表数据
});
$('btn undo')。在('click',function()上{
////卸下与btn过滤器一起应用的过滤器
});

您可以使用:

$.fn.dataTable.ext.search.push(
   function(settings, data, dataIndex) {
       return $(table.row(dataIndex).node()).hasClass('condition1');
   }
);
要筛选表格,然后重置表格,只需使用:

$.fn.dataTable.ext.search.pop();
请注意,您应该在两个动作之后重新绘制

希望这有帮助

let数据=[{
“项目1”:“这是项目1-数据集1”,
“项目2”:“这是项目2-符合条件1”
}, {
“项目1”:“这是项目1-数据集2”,
“项目2”:“这是项目2”
}, {
“项目1”:“这是项目1-数据集3”,
“第2项”:“这是第2项-符合条件2”
}, {
“项目1”:“这是项目1-数据集4”,
“项目2”:“这是项目2-符合条件1”
}, {
“项目1”:“这是项目1-数据集5”,
“项目2”:“这是项目2”
}, {
“项目1”:“这是项目1-数据集6”,
“项目2”:“这是项目2”
}, {
“项目1”:“这是项目1-数据集7”,
“项目2”:“这是项目2-符合条件1”
}, {
“项目1”:“这是项目1-数据集8”,
“第2项”:“这是第2项-符合条件2”
}, {
“项目1”:“这是项目1-数据集9”,
“项目2”:“这是项目2”
}];
变量表=$(“#表”).DataTable({
数据:数据,
栏目:[
{“数据”:“项目1”,
“渲染”:函数(数据、类型、行){
如果(类型==‘显示’){
返回“+数据+”;
}else if(type==='sort'){
返回数据;
}else if(类型==='filter'){
返回数据;
}否则{
返回数据;
}
}
},
{“数据”:“项目2”,
“渲染”:函数(数据、类型、行){
如果(类型==‘显示’){
返回“+数据+”;
}else if(type==='sort'){
返回数据;
}else if(类型==='filter'){
返回数据;
}否则{
返回数据;
}
}
}],
createdRow:函数(行、数据、索引){
如果(data.item2=='这是项目2-满足条件1'){
$(行).addClass('condition1');
}
如果(data.item2=='这是第2项-满足条件2'){
$(行).addClass('condition2');
}
}
});
$(“#btn筛选器”)。在('click',function()上{
$.fn.dataTable.ext.search.push(
功能(设置、数据、数据索引){
返回$(table.row(dataIndex.node()).hasClass('condition1');
}
);
table.draw();
});
$('btn undo')。在('click',function()上{
$.fn.dataTable.ext.search.pop();
table.draw();
});




太棒了……这正是我想要的。
pop()
是如何工作的?它只是删除了最后一组搜索还是所有搜索。很高兴我能帮上忙
pop()
function清除迄今为止应用的筛选器…我必须在自定义搜索筛选器中重新声明我的datatable,以防止无法读取未定义错误的属性行,如:dt=$(“#table”).datatable();
$.fn.dataTable.ext.search.pop();