Ako v jQuery vyberiem prvok podľa jeho atribútu name?

Na svojej webovej stránke mám 3 rádiové tlačidlá, ako je uvedené nižšie:

<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>

V jQuery chcem získať hodnotu vybraného rádiového tlačidla po kliknutí na niektoré z týchto troch. V jQuery máme selektory id (#) a class (.), ale čo ak chcem nájsť rádiové tlačidlo podľa jeho názvu, ako je uvedené nižšie?

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

Povedzte mi, prosím, ako vyriešiť tento problém.

Riešenie

Toto by malo stačiť, všetko je to v dokumentácii, kde je veľmi podobný príklad ako tento:

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

Mal by som tiež poznamenať, že v tomto úryvku máte viacero rovnakých ID. Ide o neplatné HTML. Na zoskupenie množiny prvkov používajte triedy, nie ID, pretože tie by mali byť jedinečné.

Komentáre (7)

Ak chcete zistiť, ktoré tlačidlo je začiarknuté, skúste to takto:

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

Udalosť sa zachytí pre všetky rádiové tlačidlá v skupine a hodnota vybraného tlačidla sa umiestni do val.

Aktualizácia: Po uverejnení som sa rozhodol, že vyššie uvedená odpoveď Paola je lepšia, pretože používa o jedno prechádzanie DOM menej. Túto odpoveď nechávam v platnosti, pretože ukazuje, ako získať vybraný prvok spôsobom, ktorý je kompatibilný s viacerými prehliadačmi.

Komentáre (4)

Možno niečo také?

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

Keď kliknete na ľubovoľné rádiové tlačidlo, verím, že skončí vybrané, takže toto sa zavolá pre vybrané rádiové tlačidlo.

Komentáre (2)