Не удается найти селектор атрибутов css «не равно»


Ответы:


175

Используйте такой код:

div:not([foo=''])
{
    /* CSS Applied to divs having foo value Not nothing (or having a foo value assigned) */
}


7

Одна из проблем с принятым ответом заключается в том, что он также выберет элементы, у которых вообще нет fooатрибута. Рассматривать:

<div>No foo</div>
<div foo="">Empty foo</div>
<div foo="x">XXX</div>
<div foo="y">YYY</div>
<div foo="z">ZZZ</div>

div:not([foo=''])выберет и первый, и второй divэлементы. Если вам нужны только divэлементы, для которых атрибут foo установлен в пустую строку, вы должны использовать:

div[foo]:not([foo=''])

Если вам нужны все элементы с атрибутом, fooкоторый не является ни yили z, вы должны использовать:

div[foo]:not([foo='y']):not([foo='z'])

1

Вы можете выбрать первый, используя

[foo = 'x']{
  background:red;
}

FIDDLE

Прочитайте это


Предположим, есть 100 div, из которых значение foo отсутствует (foo = '') для 50 div, а другие 50 div имеют другое значение foo, например, foo = x или y и т. Д., Тогда вам нужно написать 50 селекторов, если мы будем следовать приведенному выше решению
Shoaib Chikate

2
Операция не хочет этого: «Я хочу настроить таргетинг только на первый из следующих div с помощью селектора атрибутов css»
Сунил Хари

Ваш ответ соответствует его требованиям, но не общему решению, которое дали другие люди.
Шоаиб Чикате

@ShoaibChikate Вы правы. Я хочу более универсальное решение. Я обновил вопрос, чтобы отразить это.
Адриан Рошка
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.