Проверьте, есть ли у селектора определенный набор классов - PullRequest
4 голосов
/ 19 апреля 2010

Я пытаюсь проверить, есть ли у селектора определенные наборы классов.

.hasClass () может только проверить, есть ли у селектора один класс. И селектор .is () может искать несколько классов, но вернет true, если у селектора есть хотя бы один из классов.

Но я не хочу найти способ проверить, есть ли у селектора оба класса, и только если он имеет оба класса, выполняет действие.

Есть указатели?

Ответы [ 5 ]

4 голосов
/ 19 апреля 2010

Вы можете просто перечислить имена классов:

.foo.bar.bar

Этот селектор соответствует любому элементу, который имеет все классы foo , bar и baz .

2 голосов
/ 19 апреля 2010

Я думаю $.is('.class1.class2') будет делать то, что вы хотите. Например, $('#foo').is('.a.b') возвращает true для следующих div, а $('#foo').is('.a.c') возвращает false:

<div id="foo" class="a b"></div>

Разве это не то, что вы ищете?

2 голосов
/ 19 апреля 2010

Функция is () должна работать на вас.

  • Если у вас есть элемент, и вы пишете is (". foo"), тогда он вернет true если присутствует foo.
  • если вы пишете (". Foo.bar"), то это вернет true, если foo AND bar нет.
  • Если вы пишете (". Foo, .bar"), то это вернет истину, если Foo ИЛИ бар нет.
1 голос
/ 19 апреля 2010

Вы можете просто сделать:

var $blah = $("blah");
if($blah.hasClass("test") && $blah.hasClass("othertest")){
 // something
}

... или используйте селектор

$(".test.othertest");

1 голос
/ 19 апреля 2010

не $('div.class1.class2') не делает то, что вам нужно (т. Е. Найти любой div с class1 и class2)

...