链接到过滤器:
code:
http://jsfiddle.net/ar3PY/92/
问题:
我可以过滤,我会得到结果“空”
但是如何禁用在过滤时无论如何都显示为空的复选框。
!!请注意,每个类别不应自行过滤,只能过滤其他类别。
例如:
如果我检查“VOLVO”和“SILVER”,我会“空”。
我在寻找什么:
如果我检查“VOLVO”,则“SILVER”将被禁用。
答案 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
)。
答案 1 :(得分:0)
如何显示每个类别只有非常相同属性的已检查过滤器的内容?
另见图片解释:
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;
}