Подтвердить что ты не робот

Выбрать элементы без какого-либо класса

Мне нужно найти через селектора jQuery все промежутки на странице, у которой нет класса.

Пример:

<span class='Cool'>do not found me</span>
<span>me, me, take me please!!!</span>
4b9b3361

Ответ 1

Используйте :not() и атрибут not selector [att!=val] для фильтрации элементов с непустым атрибутом class:

$('span:not([class!=""])')

Предварительный просмотр jsFiddle

Обратите внимание, что [att!=val] является нестандартным селектором jQuery, что означает, что селектор не может использоваться в CSS или с document.querySelectorAll(). Если вы похожи на меня, и вы придерживаетесь стандартов и поэтому хотите, когда это возможно, избегать нестандартных селекторов jQuery, то следующий эквивалент:

$('span:not([class]), span[class=""]')

Это соответствует

  • span элементы, которые не имеют атрибута class, и
  • span, которые имеют атрибут class, но только тогда, когда значение атрибута пуст.

В большинстве случаев вы должны уйти с первой частью:

$('span:not([class])')

Обычно вы обнаруживаете только атрибуты class в разметке, сгенерированные приложением, ответственным за его вывод, или разработчиками, которые не обращают внимания.

Ответ 2

См. этот ответ, чтобы сделать это только с помощью css Могу ли я написать элемент выбора селектора CSS, не имеющий определенного класса?

:not([class])

Собственно, это выберет что-нибудь, у которого не будет применен .class.

Я собрал jsfiddle демо

HTML

<h2 class="fake-class">fake-class will be green</h2>
<h2 class="">empty class SHOULD be white</h2>
<h2>no class should be red</h2>
<h2 class="fake-clas2s">fake-class2 SHOULD be white</h2>
<h2 class="">empty class2 SHOULD be white</h2>
<h2>no class2 SHOULD be red</h2>

CSS

h2 {color:#fff}
:not([class]) {color:red;background-color:blue}
.fake-class {color:green}