Impossibile trovare un selettore di attributi CSS "non uguale"


Risposte:


175

Usa il codice in questo modo:

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


6

Un problema con la risposta accettata è che selezionerà anche elementi che non hanno alcun fooattributo. Tener conto di:

<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=''])selezionerà sia il primo che il secondo divelemento. Se vuoi solo divelementi che hanno un attributo foo impostato su una stringa vuota, dovresti usare:

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

Se vuoi tutti gli elementi con attributo fooche non è né yz, dovresti usare:

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

1

È possibile selezionare il primo utilizzando

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

VIOLINO

Leggi questo


Supponiamo che ci siano 100 div di cui il valore foo è assente (foo = '') per 50 div e altri 50 div hanno un valore foo diverso diciamo foo = x o y ecc. Quindi devi scrivere 50 selettori se seguiamo la soluzione sopra
Shoaib Chikate

2
Questo non è il compito dell'operatore: "Voglio scegliere come target solo il primo dei seguenti div con un selettore di attributi CSS"
Sunil Hari

La tua risposta è giusta con il suo requisito ma non una soluzione generale che altre persone hanno dato.
Shoaib Chikate

@ShoaibChikate Hai ragione. Voglio la soluzione più generica. Ho aggiornato la domanda per riflettere questo.
Adrian Rosca
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.