Я хотел бы просматривать / скрывать div на странице, основываясь на атрибутных фильтрах. Я сделал несколько атрибутов, которые могут иметь несколько значений. Пользователи могут выбирать, какие из них они хотят видеть отображаемыми.
Я не могу получить правильный алгоритм (или я не знаю, какую Javascript/jQuery
функцию использовать). Следующее, очевидно, не работает. Сначала я показываю ВСЕ элементы, а затем перебираю фильтры, скрывая те, которые не соответствуют атрибутам (читай: текущий атрибут в цикле). Это означает, что элементы будут скрыты, даже если они могут соответствовать атрибуту позже ...
Как я могу заставить этот механизм фильтра работать и не исключать / скрывать элементы, которые не нужно скрывать, основываясь на выбранных атрибутах позже в цикле? Может быть, есть оператор OR, который я могу использовать с выбор атрибута ('div[group=firstgroup|thirdgroup]')
?
Javascript:
$(document).ready(function() {
var items = $('#items').find('div');
$(items).show();
var groupsToShow = Array('firstgroup','thirdgroup');
var namesToShow = Array('Fred','Pete');
var applicationsToShow = Array('light');
for(var i=0;i<groupsToShow;i++) {
$(items).find('div[group!='+groupsToShow[i]+']').hide();
}
for(var i=0;i<namesToShow;i++) {
$(items).find('div[name!='+namesToShow[i]+']').hide();
}
for(var i=0;i<applicationsToShow;i++) {
$(items).find('div[application!='+applicationsToShow[i]+']').hide();
}
});
HTML код:
<div id="items">
<div group="firstgroup" name="Rob" application="special"></div>
<div group="firstgroup" name="Fred" application="light"></div>
<div group="secondgroup" name="Pete" application="special"></div>
<div group="thirdgroup" name="Pete" application="special"></div>
<div group="thirdgroup" name="Pete" application="light"></div>
<div group="secondgroup" name="Pete" application="normal"></div>
<div group="thirdgroup" name="Pete" application="special"></div>
</div>