禁用过滤时显示为空的复选框

时间:2017-07-03 13:19:04

标签: checkbox filter filtering

链接到过滤器:
code: http://jsfiddle.net/ar3PY/92/

问题:
我可以过滤,我会得到结果“空” 但是如何禁用在过滤时无论如何都显示为空的复选框。

!!请注意,每个类别不应自行过滤,只能过滤其他类别。

例如
如果我检查“VOLVO”和“SILVER”,我会“空”。

我在寻找什么:
如果我检查“VOLVO”,则“SILVER”将被禁用。

图片展示了它应该如何运作
enter image description here

2 个答案:

答案 0 :(得分:1)

基本上你只需要访问你的类属性就可以了。我分道扬琴,这是修改后的版本:

   $("#filters :checkbox").click(function() { 
        var subj = this;
        resetBoxes();
        $(".filterme").show();

    if(this.checked){
      var all = $(".filterme");
      var tgts = all.filter(getFilter("brand")).filter(getFilter("class")).filter(getFilter("color"));
      var brandtgt = tgts[0].className.split(' ')[1];
      $("#filters :checkbox").each(function(idx){
        var inval = $(this).attr("value");
        var brandclasses = tgts[0].className.split(' ');
        var found = $.inArray(inval, brandclasses);

        if(found<0){
            disable($(this));
        }

        });
    all.not(tgts).hide();
    tgts.show();
    if (tgts.length == 0) {
        $('.empty').show();
    } else {
        $('.empty').hide();
    }
}
});

我已经在下面的工作小提琴中找到了帮助函数(resetBoxes, enable, disable)。

http://jsfiddle.net/ppzwmvs9/6/

答案 1 :(得分:0)

如何显示每个类别只有非常相同属性的已检查过滤器的内容?

另见图片解释:

How to show content of checked filter that only has exacly same attribute for each category? see also image:

JSFIDDLE在这里: http://jsfiddle.net/ar3PY/104

var getFilter = function (category) {
    var filter = $("#filters ." + category + ":checked").map(function () {
        return '[data-filter*="' + this.value + '"]';
    }).get().join(",");
    filter = (filter.length > 0) ? filter : "*";
    return filter;
}