【发布时间】:2017-11-09 04:24:41
【问题描述】:
过滤器链接:code:http://jsfiddle.net/ar3PY/92/
问题:
我可以过滤,我会得到“空”的结果
但是如何禁用在过滤时无论如何都会显示为空的复选框。
!!请注意,每个类别不得过滤自身,只能过滤其他类别。
例如:
如果我选中“VOLVO”和“SILVER”,我会得到“空”。
我在寻找什么:
如果我选中“VOLVO”,那么“SILVER”将被禁用。
【问题讨论】:
过滤器链接:code:http://jsfiddle.net/ar3PY/92/
问题:
我可以过滤,我会得到“空”的结果
但是如何禁用在过滤时无论如何都会显示为空的复选框。
!!请注意,每个类别不得过滤自身,只能过滤其他类别。
例如:
如果我选中“VOLVO”和“SILVER”,我会得到“空”。
我在寻找什么:
如果我选中“VOLVO”,那么“SILVER”将被禁用。
【问题讨论】:
基本上,您只需要访问您的类属性即可使其工作。我叉了你的小提琴,这是修改后的版本:
$("#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)。
【讨论】:
如何显示每个类别仅具有完全相同属性的已检查过滤器的内容?
另见图片解释:
.
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;
}
【讨论】: