JQuery скрыть флажки, которые не имеют результата в фильтре

0

Я использую следующий 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), а также другие флажки, которые не существуют в этом результате, например "лимузин" и "внедорожник".

Теги:
categories
filter

1 ответ

0

Вам нужно добавить следующие строки в обработчик кликов на #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
});

Пример скрипки

  • 0
    Благодарю. но это только отключает родственные флажки. Как я могу заблокировать другие флажки, которые не имеют ответов в результатах.
  • 0
    Так что, если вы нажмете audi какие параметры следует оставить для выбора?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню