使用2个过滤器Jquery动态过滤HTML表

时间:2018-11-05 10:54:41

标签: jquery regex html5 filter custom-data-attribute

我有一张具有各种数据属性的赌场表,例如

<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变量,并将其也应用于当前过滤器。

0 个答案:

没有答案