我有一张具有各种数据属性的赌场表,例如
<tr data-games='poker, dice' data-payments='visa, cash'></tr>
我用复选框输入过滤它们,该输入将一个值存储在一个数组中,然后由正则表达式Map搜索,该表达式将获取数组中的每个单词,并说出该单词是否在适当的Data-attr中,然后显示该行。 >
//On Checkbox input add/remove the input to an object
$("#filterDiv .gamesList").delegate("input[type='checkbox']", 'change', function() {
var $this = $(this);
if ($this.prop('checked')) {
delete gameBoxes['all'];
gameBoxes[$this.attr('name')] = $this.val();
gameFilters+=1;
}
else {
delete gameBoxes[$this.attr('name')];
gameFilters -=1;
}
//Take all checkbox values from object
Object.values = function(object) {
var values = [];
for(var property in object) {
values.push(object[property]);
}
return values;
}
var val = Object.values(gameBoxes);
//hide rows that dont match the regApproved strings
$(".loading tr").hide().filter(function() {
var rtnData = "";
var regApproved= new RegExp(val.map(x => x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')).join('|'), 'i');
rtnData = (
$(this).attr("data-games").match(regApproved)
);
return rtnData;
}).fadeIn("fast");
});
我只是想知道将此过滤器与另一个过滤器组合的最佳方法。
我想也许创建一个变量(例如(gameFilters / payFilters)),当按下1个过滤器时该变量就为正,然后,如果该var为正,则从另一个过滤器中获取regApproved变量,并将其也应用于当前过滤器。