Impossible de trouver un sélecteur d'attribut CSS "différent de"


Réponses:


175

Utilisez le code comme ceci:

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


6

Un problème avec la réponse acceptée est qu'elle sélectionnera également des éléments qui n'ont pas du tout d' fooattribut. Considérer:

<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=''])sélectionnera à la fois le premier et le second divéléments. Si vous ne voulez divque des éléments dont l'attribut foo est défini sur une chaîne vide, vous devez utiliser:

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

Si vous voulez tous les éléments avec un attribut fooqui n'est ni yni z, vous devez utiliser:

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

1

Vous pouvez sélectionner le premier en utilisant

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

VIOLON

Lis ça


Supposons qu'il y ait 100 divs dont la valeur foo est absente (foo = '') pour 50 divs et que les autres 50 divs ont une valeur foo différente, disons foo = x ou y, etc., vous devez écrire 50 sélecteurs si nous suivons la solution ci-dessus
Shoaib Chikate

2
Ce n'est pas ce que l'op veut: "Je veux cibler uniquement le premier des divs suivants avec un sélecteur d'attribut css"
Sunil Hari

Votre réponse est juste avec son exigence, mais pas une solution générale que d'autres personnes ont donnée.
Shoaib Chikate

@ShoaibChikate Vous avez raison. Je veux la solution la plus générique. J'ai mis à jour la question pour refléter cela.
Adrian Rosca
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.