У меня есть таблица казино с различными атрибутами данных, например,
<tr data-games='poker, dice' data-payments='visa, cash'></tr>
Я фильтрую их с помощью ввода флажка, который сохраняет значение в массиве, который ищется с помощью карты регулярных выражений, которая берет каждое слово в массиве и говорит, находится ли это слово в соответствующем 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 фильтра, а затем, если эта переменная положительная, возьмите переменную regApproved из другого фильтра, чтобы также применить ее к текущему.