jQuery выбирает div с определенным классом, у которого нет другого класса

<div class="fuu">
  ...
</div>

<div class="fuu no">
  ...
</div>

...

Как я могу выбрать все fuu, кроме тех, у которых есть класс .no?


person Alex    schedule 05.04.2011    source источник


Ответы (3)


Используйте :not(), чтобы исключить другой класс:

$('.fuu:not(.no)')
person BoltClock    schedule 05.04.2011
comment
Небольшой лакомый кусочек: .fuu:not(.no) также является допустимым селектором CSS3 и будет соответствовать тем же элементам в браузерах, которые поддерживают :not(). Таким образом, я считаю, что jQuery передаст этот селектор querySelectorAll() вместо того, чтобы полагаться на Sizzle для этих браузеров, тем самым улучшая производительность в этих браузерах. Не то чтобы никого это волновало, конечно :) - person BoltClock; 05.04.2011
comment
+1 от меня за приятный дополнительный совет, и с +8 пока кажется, что некоторые разработчики действительно заботятся о производительности :-) - person Mario Awad; 22.10.2013
comment
Не удалось заставить работать: $("#mydiv .fuu:not(.no)").click(function(){console.log('test');});. Я долго искал проблему, связанную с not(), в конце концов это произошло просто потому, что класс active был добавлен динамически. Пришлось сделать так: $("#mydiv").on('click', '.fuu:not(.no)', function(){console.log('test');});. Поскольку я продолжал копаться здесь, думая, что not() не работает, я подумал, что комментарий здесь может помочь другим. - person fpierrat; 30.11.2015
comment
если вам нужно исключить несколько классов, используйте синтаксис: $('.aaa:not(.bbb):not(.ccc)'). Это получит все, что имеет класс aaa, но не класс bbb или ccc - person Kip; 13.07.2018

Вы также можете отфильтровать класс .no, например:

$('.fuu').not('.no');
person Joey C.    schedule 05.04.2011

получить имя класса div, если у него есть ПРОБЕЛ в имени класса, это означает, что он имеет более одного класса!

person Sourav    schedule 05.04.2011
comment
А что, если бы был <div class="fuu yes">? У него нет класса no, но он вернет false для .attr('class') == 'fuu'. - person BoltClock; 05.04.2011