Я пытался выяснить, как это сделать правильно, и, похоже, не могу заставить его работать.
Я хочу использовать jQuery, чтобы выбирать, что я хочу показать на странице. Я искал и пытался найти какой-нибудь сценарий, какой-то работал, но не совсем так, как я хотел.
На странице будут использоваться флажки в качестве «тегов», например искусство, компьютеры, здоровье, видеоигры.
<div class="tags">
<label><input type="checkbox" class="arts" /> Arts </label>
<label><input type="checkbox" class="computers" /> Computers </label>
<label><input type="checkbox" class="health" /> Health </label>
<label><input type="checkbox" class="video-games" /> Video Games </label>
</div>
Тогда на странице будут результаты, и к каждому результату будут прикреплены теги.
<ul class="results">
<li class="arts computers">
Result 1
</li>
<li class="video-games">
Result 2
</li>
<li class="computers health video-games">
Result 3
</li>
<li class="arts video-games">
Result 4
</li>
</ul>
Я хочу иметь возможность нажимать на искусство и видеоигры, и он будет отображать все, что имеет как искусство, так и видеоигры, поэтому результат 4. Или я могу просто выбрать компьютеры и получить результаты 1 и 3.
Я думал, что могу сделать что-то вроде
$('.tags input').click( function() {
$('.results > li').hide();
//For each one checked
$('input').is(':checked').each( function() {
//Display that result
$('.results li').hasClass($(this).attr('class')).show();
});
});
но это не работает, он просто все скрывает, но потом не возвращается, чтобы показать остальное. Я знаю, что логика совершенно неправильная, я не думаю, что я должен использовать каждый таким образом? Может быть, использовать его, чтобы захватить все классы в массиве, а затем показать li, у которых есть эти классы?
Любые идеи?