Я использую следующий jquery для фильтра с несколькими категориями.
var getFilter = function(category) {
var filter = $("#filters ." + category + ":checked").map(function() {
return "." + this.value;
}).get().join(",");
filter = (filter.length > 0) ? filter : "*";
console.log(filter);
return filter;
}
$("#filters :checkbox").click(function() {
var all = $(".filterme");
var tgts = all.filter(getFilter("brand")).filter(getFilter("class")).filter(getFilter("color"));
all.not(tgts).hide();
tgts.show();
});
можно увидеть на: http://jsfiddle.net/ar3PY/2/
Все отлично работает, за исключением того, что я хочу скрыть ненужные флажки. Значение, если я выберу "BMW", тогда флажок "Audi" должен быть скрыт (unclickable), а также другие флажки, которые не существуют в этом результате, например "лимузин" и "внедорожник".
Вам нужно добавить следующие строки в обработчик кликов на #filters :checkbox
:
$("#filters :checkbox").click(function() {
var all = $(".filterme");
var tgts = all.filter(getFilter("brand")).filter(getFilter("class")).filter(getFilter("color"));
all.not(tgts).hide();
tgts.show();
var blockSiblings = $(this).is(':checked'); // determine whether or not to disable siblings
$(this).siblings(':checkbox').prop('disabled', blockSiblings); // set the property
});
audi
какие параметры следует оставить для выбора?