2015-10-14 3 views
1

нужно выбрать HTML DOM элементы с множественной selectors.For Например, я хотел бы выбрать все, что РОМ есть классы А или В и D Классы или C.JQuery множественного выбора И ИЛИ

Litteraly:

((A OR B) AND (C OR D)) 

Как я могу это сделать в JQuery?

Я уже пробовал это, но безуспешно:

$([.A,.B][.C,.D]) 

Любая помощь?

+0

Вы в основном просите элементы, имеющие какие-либо из четырех буквенных классов –

ответ

4

Вы могли бы использовать составную инструкцию, где вы получите все элементы, которые удовлетворяют первым критериям затем процеживают, что из к элементам, отвечающим второму критерию. Это немного более масштабируемо, если есть много возможных перестановок.

$(".A, .B").filter(".C, .D"); 
+0

Это действительно хороший ответ, если вы просто хотите селектор. Однако, если вы хотите, чтобы оператор if, завернутый вокруг вас, всегда мог использовать функцию is. if ($ ('. a, .b'). is ('. c, .d')) {alert ('сопоставление класса a или b с c или d классом);} –

+0

@PhilCook - using '. is() 'таким образом предполагает, что существует только один возможный результат интереса. Помните, что объекты jQuery являются коллекциями и могут содержать много совпадающих объектов, поэтому '.is()' только скажет вам, если хотя бы один из первого набора соответствовал селектору '.C, .D '', он не сказал бы вы, какие из них или как работать с коллекцией матчей. – jfriend00

3

Если это действительно то просто, вы можете просто сделать декартово произведение и перечислить все возможности:

$('.A.C, .A.D, .B.C, .B.D'); 
+1

25 секунд раньше ... вы выиграли: D –

+0

Халас это не так просто. Мой пример имеет 4 класса, но в моем случае, у меня может быть больше 10, и добавлено динамическое – user2733521

2

Вы возможные результаты:

  • .a.c
  • .a.d
  • .b.c
  • .b.d

отсюда:

$('.a.c, .a.d, .b.c, .b.d') 
Смежные вопросы