Если вы установите свой HTML как:
<div id="controls">
<a href="#" id="1">Filter Item 1</a>
<a href="#" id="2">Filter Item 2</a>
<a href="#" id="3">Filter Item 3</a>
<a href="#" id="4">Filter Item 4</a>
<a href="#" id="5">Filter Item 5</a>
</div>
<div id="items">
<div class="1">Item 1</div>
<div class="1">Item 1</div>
<div class="2">Item 2</div>
<div class="3">Item 3</div>
<div class="1">Item 1</div>
<div class="4">Item 4</div>
<div class="4">Item 4</div>
<div class="1">Item 1</div>
<div class="5">Item 5</div>
</div>
Тогда ваш код jQuery может быть таким простым:
$(function(){
$("#controls a").click(function() {
$("#items").find("." + this.id).toggle();
});
});
Конечно, вы захотите добавить визуальную индикацию того, что фильтр включается и выключается.
Возможно, вы не захотите связывать элементы с каждой ссылкой через id / классы, но вместо этого используйте хранилище данных jQuery, в зависимости от ваших потребностей.
Рабочий пример, протестированный в Firefox, здесь: http://jsfiddle.net/mwolfetech/GetRV/
Редактировать: Это решение похоже на Анто Биниша Каспара , в основном отличается только
как изменяется HTML. Я думаю, что данные div, скорее всего, будут хорошей структурой для вашего документа и устраняют необходимость в дополнительных классах для контроля. Это всегда проектное решение - балансировка div (для структурного подразделения) против класса (для категорий). Кроме того, нет необходимости извлекать идентификатор из объекта события, поскольку jQuery предоставляет ссылку this
.