Dans jQuery, comment sélectionner un élément par son attribut de nom ?

J'ai 3 boutons radio dans ma page web, comme ci-dessous :

<label for="theme-grey">
  <input type="radio" id="theme-grey" name="theme" value="grey" />Grey</label>
<label for="theme-pink">
  <input type="radio" id="theme-pink" name="theme" value="pink" />Pink</label>
<label for="theme-green">
  <input type="radio" id="theme-green" name="theme" value="green" />Green</label>

En jQuery, je veux obtenir la valeur du bouton radio sélectionné lorsque l'un de ces trois boutons est cliqué. En jQuery, nous avons les sélecteurs id (#) et class (.), mais que faire si je veux trouver un bouton radio par son nom, comme ci-dessous ?

$("<radiobutton name attribute>").click(function(){});

Veuillez me dire comment résoudre ce problème.

Solution

Cela devrait suffire. Tout ceci est décrit dans la [documentation] (http://docs.jquery.com/Selectors/attributeEquals#attributevalue), qui contient un exemple très similaire à celui-ci :

$("input[type='radio'][name='theme']").click(function() {
    var value = $(this).val();
});

Je dois également noter que vous avez plusieurs ID identiques dans cet extrait. C'est du HTML non valide. Utilisez des classes pour regrouper un ensemble d'éléments, et non des identifiants, car ceux-ci doivent être uniques.

Commentaires (7)

Pour déterminer quel bouton radio est coché, essayez ceci :

$('input:radio[name=theme]').click(function() {
  var val = $('input:radio[name=theme]:checked').val();
});

L'événement sera capturé pour tous les boutons radio du groupe et la valeur du bouton sélectionné sera placée dans val.

*Mise à jour : après avoir posté, j'ai décidé que la réponse de Paolo ci-dessus était meilleure, puisqu'elle utilise une traversée du DOM en moins. Je laisse cette réponse en l'état puisqu'elle montre comment obtenir l'élément sélectionné d'une manière compatible avec tous les navigateurs.

Commentaires (4)

Quelque chose comme ça peut-être ?

$("input:radio[name=theme]").click(function() { 
 ...
}); 

Lorsque vous cliquez sur un bouton radio, je pense qu'il sera sélectionné, donc cette fonction sera appelée pour le bouton radio sélectionné.

Commentaires (2)