Справка скрипта фильтра Jquery - PullRequest
0 голосов
/ 04 декабря 2009

Я использую сценарий фильтра и пытаюсь немного изменить jquery.

(см. Демонстрацию здесь: http://www.askthecssguy.com/2009/03/checkbox_filters_with_jquery_1.html)

Теперь, когда вы увидели демо, вы знаете, что, сняв флажок, он отфильтровывает результаты с этими тегами. Например, если вы отмените выбор тега «wordpress», все элементы, содержащие этот тег, будут отфильтрованы и удалены.

НО, если у вас есть элемент с тегами «wordpress» и «ajax», а затем снят флажок wordpress, этот элемент исчезнет. Я хочу, чтобы этот элемент остался, потому что у него все еще есть непроверенный тег (ajax). Я хочу, чтобы элемент исчез, если все его теги были отменены. Может кто-нибудь взглянуть на jquery (нижняя половина) и сказать мне, где я могу изменить это, чтобы он работал?

СПАСИБО!

1 Ответ

0 голосов
/ 04 декабря 2009

Код становится довольно сложным ... Я думаю, что я бы изменил стратегии на что-то вроде этого: (внутри события click поля ввода)

// First get all the checked inputs
var checkedValues = [];
$("input.dynamicFilterInput:checked").each(function() {
    checkedValues.push($(this).val());
});

// Now get all the filterable items
$("ul.filterThis li").each(function() {
    // If the item doesn't have a class that corresponds with one of the
    //    the checked items then hide it
    var found = false;
    for (var i=0; i<checkedValues.length; i++) {
        if ($(this).hasClass(checkedValues[i])) {
            found = true;
            break;
        }
    }
    if (!found) {
        $(this).slideUp();
    } else {
        $(this).slideDown();
    }
});

Таким образом, в основном вы пересчитываете весь список элементов каждый раз, когда изменяется любой из входных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...