У меня есть веб-страница, которая содержит набор элементов, которые помечены метаданными с помощью HTML5-тега «data-». Каждый элемент представляет определенный курс или программу в школе. Вот пример того, как может выглядеть набор элементов:
<div class="courseBox" data-type="course" data-location="campus">info about this particular course</div>
<div class="courseBox" data-type="program" data-location="campus">info about this particular course</div>
<div class="courseBox" data-type="course" data-location="distance">info about this particular course</div>
<div class="courseBox" data-type="program" data-location="distance">info about this particular course</div>
Как вы можете видеть, каждый элемент представляет собой либо курс (короткий одиночный курс), либо программу (полное образование, охватывающее несколько лет). Кроме того, каждый элемент - это кампус eithar (в кампусе) или дистанция (дистанционное обучение).
В интерфейсе для этой страницы пользователь имеет четыре кнопки, которые могут быть либо вкл. / Выкл., Либо выкл. / Ложно. Четыре кнопки:
Курс | Программа | Кампус | Расстояние
Когда страница загружается, все четыре кнопки включены / true, поскольку на странице отображаются все курсы и программы, как в кампусе, так и в дистанционном обучении.
Когда пользователь нажимает одну из кнопок, я хочу использовать jQuery, чтобы скрыть все элементы, которые больше не соответствуют критериям; другими словами: фильтр.
Сначала это казалось легкой задачей. Просто напишите что-нибудь вроде:
$("#courseButton").toggle(function(){
$("courseBox[data-type='course']").hide();
},
function(){
$("courseBox[data-type='course']").show();
});
Это прекрасно работает, пока два разных способа категоризации элементов не сталкиваются. Но рассмотрим этот случай:
Пользователь сначала нажимает «Курс»
кнопка, которая скрывает все курсы
(помечены «курсы»).
Затем нажимает кнопку «Расстояние»
который скрывает все элементы, отмеченные
"Расстояние".
Затем пользователь нажимает «Курс»
кнопка снова, которая покажет все
элемент, помеченный "курсами", включая
те, которые отмечены «расстояние»,
несмотря на то, что они
должен быть скрыт.
Мой вопрос теперь таков: как мне создать функцию фильтра, используя jQuery, которая будет работать правильно, даже если есть два разных (пересекающихся) способа категоризации элементов?
Заранее спасибо!
/ Томас Кан