Не вдається знайти селектор атрибутів css "не рівний"


Відповіді:


175

Використовуйте такий код:

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


6

Одна з проблем прийнятої відповіді полягає в тому, що вона також вибере елементи, які взагалі не мають 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;
}

ПІДТВОРЕННЯ

Прочитай це


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

2
Це не оп, який хоче: "Я хочу націлити лише першу з наступних дівок із селектором атрибутів css"
Суніл Харі

Ваша відповідь правильна з його вимогою, але не загальним рішенням, яке дали інші люди.
Shoaib Chikate

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