Nie można znaleźć selektora atrybutu CSS „nierówne”


Odpowiedzi:


175

Użyj kodu w ten sposób:

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


6

Jednym z problemów z zaakceptowaną odpowiedzią jest to, że wybierze również elementy, które w ogóle nie mają fooatrybutu. Rozważać:

<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=''])wybierze zarówno pierwszy, jak i drugi divelement. Jeśli chcesz tylko divelementy, które mają atrybut foo, który jest ustawiony na pusty ciąg, powinieneś użyć:

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

Jeśli chcesz, aby wszystkie elementy miały atrybut, fooktóry nie jest równy yani z, powinieneś użyć:

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

1

Możesz wybrać pierwszy za pomocą

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

SKRZYPCE

Przeczytaj to


Załóżmy, że istnieje 100 elementów div, z których nie ma wartości foo (foo = '') dla 50 elementów div, a pozostałe 50 div mają inną wartość foo powiedz foo = x lub y itd., A następnie musisz napisać 50 selektorów, jeśli postępujemy zgodnie z powyższym rozwiązaniem
Shoaib Chikate,

2
Nie tego chce op: „Chcę kierować reklamy tylko na pierwszy z poniższych elementów div z selektorem atrybutu css”
Sunil Hari

Twoja odpowiedź jest zgodna z jego wymaganiami, ale nie jest ogólnym rozwiązaniem, które dali inni ludzie.
Shoaib Chikate

@ShoaibChikate Masz rację. Chcę bardziej ogólnego rozwiązania. Zaktualizowałem pytanie, aby to odzwierciedlić.
Adrian Rosca
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.