过滤

2017-07-03 59 views
0

链接到过滤器时,将显示为空禁用复选框:
code:http://jsfiddle.net/ar3PY/92/过滤

问:
我可以过滤和我会导致“空” 但如何禁用复选框即过滤时无论如何都会显示为空。

!!请注意,每个类别不得过滤本身,只能与其他类别过滤。

例如
如果我检查 “VOLVO” 和 “银” 我得到 “空”。

我在寻找的是:
如果我检查“沃尔沃”,那么“银色”将被禁用。

图片,显示它应该如何工作
enter image description here

回答

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/

+0

看起来不错,但两件事情还是留给: 1.如果没有复选框被选中,我将能够检查整个类别的汽车品牌或carstyle或颜色。像图片展示我可以点击奥迪,宝马和沃尔沃,然后过滤颜色和汽车。 2.当我检查一些复选框,然后取消全部选中时,我注意到一些错误,一些复选框仍然被禁用。 Thx求助! – Doodl

+0

很高兴为您提供帮助,是的,这是一个粗略的代码,带有关于检查类的指针,让您开始 - 特别是访问形成代码的className严重依赖它,最终可以扩展它以重置复选框,甚至最初禁用或隐藏复选框的其余部分,使第一步成为品牌选择。 – Qiqo

+0

你可以修复你留下的错误,如果我检查一些复选框,然后取消选中它们,一些复选框仍然被禁用,并且它感觉有错误。 :/ – Doodl

0

如何显示检查过滤器,只为每个类别exacly相同属性的内容?

也看到图像的解释:

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; 
}