Доброго времени суток, сообщество!
Есть вот такой вот фильтр: http://jsfiddle.net/xvs9jL1c/
Но, к сожалению, не совсем устраивает своим функционалом и у меня нет идей, как его реализовать.
Сейчас, если выбрать два параметра, фильтр отображает блоки, в которых есть хотя бы один из выбранных параметров. А надо чтобы при выборе двух параметров отображались только блоки, удовлетворяющие обоим. При выборе трех - отображались те блоки, у которых есть все три параметра и т.д.
Но так же важно и то, что при выборе только одного параметра, должны отображаться все блоки, которые его имеют.
Вот код:
$("#filters :checkbox").click(function() {
var re = new RegExp($("#filters :checkbox:checked").map(function() {
return this.value;
}).get().join("|") );
$("div").each(function() {
var $this = $(this);
$this[re.source!="" && re.test($this.attr("class")) ? "show" : "hide"]();
});
});
.categorya, .categoryb, .categoryrko {
width: 30px;
height: 20px;
line-height:20px;
text-align:center;
background: red;
margin: 10px;
float: left;
font-size:11px;
color:white;
font-family:sans-serif;
}
.categoryb {
background: blue;
}
.categorya.categoryb{
background:purple;
}
p.info{
padding:30px 20px 0 20px;
color:#666;
font-family:sans-serif;
font-size:13px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="filters">
<li>
<input type="checkbox" value="categorya" id="filter-categorya" />
<label for="filter-categorya">Category A</label>
</li>
<li>
<input type="checkbox" value="categoryb" id="filter-categoryb" />
<label for="filter-categoryb">Category B</label>
</li>
<li>
<input type="checkbox" value="categoryrko" id="filter-categoryrko" />
<label for="filter-categoryrko">RKO</label>
</li>
</ul>
<div class="categorya categoryb">A, B</div>
<div class="categorya">A</div>
<div class="categorya">A</div>
<div class="categorya">A</div>
<div class="categoryrko">RKO</div>
<div class="categoryb">B</div>
<div class="categoryb">B</div>
<div class="categoryb">B</div>
Буду рад помощи!
Самое простое решение - замена join("|") на join(" "). Но будет чувствительно к порядку в котором объявлены классы
http://jsfiddle.net/LceLpr1f/
$("#filters :checkbox").click(function() {
var re = new RegExp($("#filters :checkbox:checked").map(function() {
return this.value;
}).get().join(" ") );
$("div").each(function() {
var $this = $(this);
$this[re.source!="" && re.test($this.attr("class")) ? "show" : "hide"]();
});
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне надо сделать таймер обратного отсчета до 31 декабряБолее менее понимаю, каковым должен быть алгоритм:
Необходимо реализовать функцию, через которую можно будет управлять телефонной книгойНужно реулизовать всего 3 команды: ADD(добавляет контакт,...
Не получается авторизоваться на сервере soap, я новичок в этомВ документации к апи написано, что там двойная авторизация
Мне необходимо с помощью php выдавать дату завтрашнего дня в формате yyyy-mm-dd я погуглил и нашел вот это выражение <?php $tomorrow = mktime(0, 0, 0, date("m") , date("d")+1,...