78 votes

Comment sélectionner des éléments sur des valeurs d'attributs multiples ?

Avec jQuery, il est facile de sélectionner des éléments ayant une valeur d'attribut donnée.

Par exemple :

var elements = $('div[attr1="value1"]');

Mais comment puis-je sélectionner sur plusieurs attributs (par exemple, attr1 = value1 y attr2 = value2 )?

2 votes

0 votes

Document utile sur Sélecteur d'attributs multiples .

115voto

Dmitry Beransky Points 3916

Étant donné que jquery utilise des sélecteurs CSS, tels que définis par la spécification CSS, un sélecteur avec plusieurs conditions aura l'apparence suivante :

$('div[attr1="value1"][attr2="value2"]')

voir la spécification CSS pour plus de références : http://www.w3.org/TR/CSS2/selector.html#matching-attrs

2 votes

@JitendraPancholi : où avez-vous eu cette idée exactement ? J'ai cité l'endroit exact dans la documentation qui soutient ma déclaration. Si vous allez réfuter ce que j'ai dit (et me voter), j'attendrais au moins la courtoisie d'une référence à quelque chose d'officiel.

1 votes

J'ai essayé votre code dans mon projet et j'ai constaté qu'il ne fonctionne pas. Je l'ai fait de manière pratique et je n'ai pas d'autre référence.

0 votes

$('div[attr1="value1"]').filter('div[attr2="value2"]') ; ce code fonctionne comme un charme.

22voto

SunnyRed Points 1543

Vous pouvez par exemple enchaîner et filtrer comme suit

var elements = $('div[attr1="value1"]').filter('div[attr2="value2"]');

16voto

Balasubramani M Points 538

Je trouve cette solution assez simple.

$('[attr1="home"][attr2="settings"]')

0 votes

@DanielLiuzzi ci-dessus est correct pour l'exécution de AND

0 votes

@Geek Ce n'était pas correct quand j'ai ajouté mon commentaire. Comme la réponse a été modifiée et corrigée depuis, je vais supprimer le commentaire pour éviter toute confusion.

0voto

Strabek Points 725

Vous pouvez même cibler un élément comme ceci :

const elem = $('.className[type="checkbox"][name="someName"]')

ou de manière plus dynamique avec un paramètre :

const elem = $('.elemClassName_'+$(this).data('id')+'[type="checkbox"][name="someName"]')

J'utilise le dernier exemple pour cibler une case à cocher lorsque la valeur d'une entrée change. Ce qui précède est tiré de nombreux exemples, et ils fonctionnent pour moi.

0voto

Pour sélectionner plusieurs attributs, voir le code ci-dessous.

Ce code va trouver toutes les entrées qui ont un id et dont l'attribut name se termine par "man" et définit la valeur.

$( "input[id][name$='man']" ).val( "this input has id and name ends with 'man'" );

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