398 votes

Spécifier des sélecteurs d'attributs multiples en CSS

Quelle est la syntaxe pour faire quelque chose comme :

input[name="Sex" AND value="M"]

En gros, je veux sélectionner le input qui a l'attribut name="Sex" ainsi que l'attribut value="M" :

<input type="radio" name="Sex" value="M" />

Des éléments tels que les suivants devraient no être sélectionné :

<input type="radio" name="Sex" value="F" />

592voto

raina77ow Points 45965

Simple input[name=Sex][value=M] ferait l'affaire. Et c'est en fait bien décrit dans le document standard :

Les sélecteurs d'attributs multiples peuvent être utilisés pour faire référence à plusieurs d'un élément, ou même plusieurs fois au même attribut.

Ici, le sélecteur correspond à tous les éléments SPAN dont l'attribut " hello " a exactement la valeur a exactement la valeur "Cleveland" et dont l'attribut "goodbye" a exactement la valeur "Columbus" :

span[hello="Cleveland"][goodbye="Columbus"] { color: blue; }

À titre d'information, l'utilisation de guillemets autour d'une valeur d'attribut n'est requise que si cette valeur n'est pas un identifiant valide.

Démonstration de JSFiddle

15 votes

Existe-t-il quelque chose comme ça, mais en OR au lieu de AND ?

4 votes

Vous voulez dire autre que , (virgule) ?

2 votes

Vous ne pouvez pas écrire span [hello="Cleveland"], [goodbye="Columbus"] mais vous devez répéter une partie (éventuellement longue).

90voto

Yogesh Khater Points 1377

Pour la concaténation, c'est :

input[name="Sex"][value="M"] {}

Et pour prendre le syndicat c'est :

input[name="Sex"], input[value="M"] {}

35voto

Dennis Points 19148

Concaténer les sélecteurs d'attributs :

input[name="Sex"][value="M"]

1 votes

Il convient de noter qu'au moins une des valeurs de l'attribut doit être citée. Cela échouerait si vous l'écriviez sous la forme input[name=Sex][value=M] même s'il serait valable d'avoir un sélecteur avec un seul attribut qui n'utiliserait pas de guillemets.

1 votes

@stevec Vouliez-vous mettre cela sur la réponse acceptée ? J'ai cité les valeurs dans ma réponse. Je ne pense pas non plus que ce soit vrai. Vous avez besoin de guillemets si la réponse contient certains caractères mais pas dans cet exemple. mothereff.in/attributs non cités

0 votes

J'ai ajouté cette note parce que j'ai essayé dans plusieurs navigateurs sans guillemets et cela a échoué dans tous. Je pense que le problème est que sans guillemets sur au moins un, c'est ambigu car cela pourrait être interprété comme une entrée dont le nom est Sex][value=M

6voto

J'ajoute qu'il ne doit pas y avoir d'espace entre le sélecteur et le support d'ouverture.

td[someclass] 

fonctionnera. Mais

td [someclass] 

ne le fera pas.

-8voto

Eli Points 605
[class*="test"],[class="second"] {
background: #ffff00;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X