过滤
问题描述:
链接到过滤器时,将显示为空禁用复选框:code:
http://jsfiddle.net/ar3PY/92/过滤
问:
我可以过滤和我会导致“空” 但如何禁用复选框即过滤时无论如何都会显示为空。
!!请注意,每个类别不得过滤本身,只能与其他类别过滤。
例如:
如果我检查 “VOLVO” 和 “银” 我得到 “空”。
我在寻找的是:
如果我检查“沃尔沃”,那么“银色”将被禁用。
答
基本上你只需要访问你的类属性,使其工作。我叉你的小提琴,这里的修改后的版本:在下面的工作小提琴发现
$("#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
)。
答
如何显示检查过滤器,只为每个类别exacly相同属性的内容?
也看到图像的解释:
。
的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;
}
看起来不错,但两件事情还是留给: 1.如果没有复选框被选中,我将能够检查整个类别的汽车品牌或carstyle或颜色。像图片展示我可以点击奥迪,宝马和沃尔沃,然后过滤颜色和汽车。 2.当我检查一些复选框,然后取消全部选中时,我注意到一些错误,一些复选框仍然被禁用。 Thx求助! – Doodl
很高兴为您提供帮助,是的,这是一个粗略的代码,带有关于检查类的指针,让您开始 - 特别是访问形成代码的className严重依赖它,最终可以扩展它以重置复选框,甚至最初禁用或隐藏复选框的其余部分,使第一步成为品牌选择。 – Qiqo
你可以修复你留下的错误,如果我检查一些复选框,然后取消选中它们,一些复选框仍然被禁用,并且它感觉有错误。 :/ – Doodl