Можете ли вы сгруппировать селекторы jQuery с (немного более продвинутой) логикой? - PullRequest
5 голосов
/ 07 декабря 2011

Мы работаем над системой фильтров, где вы получаете группы опций, например:

Цвет Красный, синий, зеленый

ЦенаДиапазон £ 0- £ 5, £ 6- £ 10, £ 11 +

Марка Adidas, Nike, Converse

Каждый параметр представляет собой один флажок.Мы фильтруем следующую логику:

  • ИЛИ из группы
  • объединяют те, которые имеют AND

Итак, если я должен проверить Red,Синий, £ 0- £ 5, Nike и Converse, логика будет такой:

(красный ИЛИ синий) И (£ 0-5) И (Nike ИЛИ Converse)

Каждый флажок имеетудостоверение личностиЯ хочу построить селектор, используя приведенную выше логику, но я не уверен, как лучше это сделать в jQuery.Очевидно, AND просто добавляются, и OR (или эквивалентные) используют команды в этих селекторах, но это нарушит логику без какого-либо способа группировки, например:

$('(#red,#blue)(#price0to5)(#nike,#converse)')

Любые предложения илиальтернативы?

1 Ответ

8 голосов
/ 07 декабря 2011

Предположим, у вас есть набор предметов с соответствующими классами:

<div class="red nike underfive"></div>
<div class="blue green converse elevenup"></div>
<div class="blue converse underfive"></div>

ИЛИ эквивалентны запятым, а AND требуют цепочки:

$(".red,.blue").filter(".underfive").filter(".nike,.converse"); // 1 and 3
$(".green").filter(".underfive"); // empty
$(".blue").filter(".green"); // 2
...