JQuery'de, bir öğeyi ad özelliğine göre nasıl seçerim?


328

Web sayfamda aşağıdaki gibi 3 radyo düğmesi var:

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

JQuery'de, bu üçünden herhangi biri tıklatıldığında seçilen radyo düğmesinin değerini almak istiyorum. JQuery'de id (#) ve class (.) Seçicilerimiz var, ancak aşağıdaki gibi adıyla bir radyo düğmesi bulmak istersem ne olur?

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

Lütfen bana bu sorunun nasıl çözüleceğini söyleyin.


5
ilgili 'etiket' etiketleri arasına alanlar eklendiği sürece 'for' özelliğini kesinlikle belirtmeniz gerekmez
Lucius

2
jQuery 1.8 ve üstü bunu değiştirir .... Aşağıda açıklayan bir cevap ekledim.
Kevin LaBranche

3
A1rPun'un cevabı en iyisidir: jQuery olmayan bir astar!
Rudey

1
Benim js app durumu korumak için bir radyo düğmesi kullanılır. Bu konuyu kontrol etmeden önce bir saat boyunca hata ayıklandı. Bu Çıkış
Prasanth

Düz JS:document.querySelectorAll("input:radio[name=theme]").forEach(function() { this.onclick=function() { var value = this.value; }; });
mplungjan

Yanıtlar:


339

Bunu yapmalı, tüm bunlar buna çok benzer bir örneği olan belgelerde :

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

Ayrıca bu snippet'te birden fazla aynı kimliğiniz olduğunu da belirtmeliyim. Bu geçersiz HTML. Benzersiz olması gerektiği için kimlikleri değil, öğe kümelerini gruplandırmak için sınıfları kullanın.


4
@gargantaun - bir radyo düğmesini tıklatırsanız, buna ne olur?
Paolo Bergantino

11
İyi bir nokta. Yine de "jQuery'de adını kullanarak seçilen radyo düğmesi değeri nasıl alınır?". "JQuery kullanarak seçili radyo düğmesi değeri nasıl alınır?" Küçük bir fark, ama beni biraz şaşırtan biri.
devasa

1
Soruya göre bu cevap doğrudur. küresel görüşte clayton'un cevabına geçiyoruz.
Krish

8
JQuery 1.8'den [type='radio']itibaren :radiobu şekilde kullanmak jQuery, yerel DOM querySelectorAll()yöntemi tarafından sağlanan performans artışından yararlanabilir .
Adam

2
@PaoloBergantino yanıtı% 100 doğrudur çünkü istenen radyo düğmesine tıkladıktan sonra değeri döndürür. @ Clayton Rabenda yanıtı bunu vermez.
Azam Alvi

185

Hangi radyo düğmesinin işaretlendiğini belirlemek için şunu deneyin:

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

Gruptaki tüm radyo düğmeleri için olay yakalanacak ve seçilen düğmenin değeri val olarak yerleştirilecektir.

Güncelleme: Gönderdikten sonra, yukarıdaki bir yanıtın daha iyi olduğuna karar verdim, çünkü bir tane daha az DOM geçişi kullanıyor. Seçilen öğenin çapraz tarayıcı uyumlu bir şekilde nasıl alınacağını gösterdiğinden bu cevabın durmasına izin veriyorum.


3
Baz don nasıl soru OKUYUN, bu cevap ihtiyacım vardı. : kontrol benim denklemde eksik olan şeydir. Teşekkürler.
HPWD

9
JQuery 1.8'den [type='radio']itibaren :radiobu şekilde kullanmak jQuery, yerel DOM querySelectorAll()yöntemi tarafından sağlanan performans artışından yararlanabilir .
Adam

Ben kolon sonra ve yanlışlıkla "kontrol" önce bir boşluk verdi. Bu yüzden lütfen boş alan olmadığından emin olun.
Sigara maymunu

Bir tıklama etkinlik işleyicisinden değer almak istemeyenler için yararlı bir yanıt. Aksi takdirde, :checkedhangi düğmenin işaretlendiğini bulmak için kullanmanız gerekir ; örneğin, thisanahtar kelimenin tıklanan düğmeyle eşleşmediği bir form gönderme olay işleyicisi ile .
che-azeh

155
$('input:radio[name=theme]:checked').val();

Basitçe devam ettim $("input[name=theme]:checked").val();( :radioparçayı dışarıda bırakıyorum ve IE, FF, Safari ve Chrome'da iyi çalışıyor gibi görünüyor. JQ v 1.3 ile çalışmak zorunda kaldım ... Tabii ki, 'tema' adlı sadece bir öğe var demektir
morespace54

2
Bu en iyi cevap IMO, "Bana BU adı ile KONTROL EDİLEN radyo değerini al" diyor. Etkinlik, vb.
Gerekmez

39

diğer yol

$('input:radio[name=theme]').filter(":checked").val()

1
+1 değerini değiştirmeyle ilgileniyorsanız bu yararlıdır
swapnesh

Bu sabittir, çünkü radyo düğmelerini tutmak için bir değişken kullanabilirsiniz, örneğin $themeRadios = $('input:radio[name=theme'])herhangi bir olay işleyiciyi ayarlamak ve ardından filtreyi kullanarak değeri almak için, örn $themeRadios.filter(":checked").val().
Joshua Pinter

Bu çözümü seviyorum.
Abel

20

Bu benim için harika çalışıyor. Örneğin, aynı "isim" ile iki radyo düğmeniz var ve sadece işaretli olanın değerini almak istediniz. Bunu deneyebilirsiniz.

$valueOfTheCheckedRadio = $('[name=radioName]:checked').val();

Bu cevabın şu anda kabul edilen 230+ yükseltilmiş cevabından daha iyi olmasının nedeni, bu cevabın aynı zamanda kullanıcının klavyeyle bir radyo düğmesiyle etkileşime girdiği zamanı da hesaba katmasıdır.
gmeben

16

Aşağıdaki kod, seçilen radyo düğmesi değerini ada göre almak için kullanılır

jQuery("input:radio[name=theme]:checked").val();

Teşekkürler Adnan


hmm .. son cevabınızda kod biçimlendirmenizi düzeltmedim mi? Lütfen kendinize iyi bakın :-)
kleopatra

13

Bu soruyu, jQuery 1.7.2'den 1.8.2'ye yükselttikten sonra bir hata araştırırken buldum. Cevabımı ekliyorum çünkü jQuery 1.8 ve üstünde bir değişiklik oldu, bu sorunun şu anda nasıl cevaplanacağını değiştiriyor.

JQuery 1.8 ile radyo,: onay kutusu,: metin gibi sözde seçicileri kullanımdan kaldırmışlardır.

Yukarıdakileri yapmak için şimdi :radioile değiştirin [type=radio].

Böylece cevabınız şimdi jQuery 1.8 ve üstünün tüm sürümleri için:

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

1.8 benioku değişikliği ve bu değişiklik için özel bilet hakkında bilgi edinebilir ve neden Ek Bilgiler bölümünün altındaki : radyo seçici sayfasında anlayabilirsiniz .


5
: kontrol edilmez. Böylece kullanabilirsiniz$("input[type='radio'][name='theme']:checked")
Adam

12

Gerçekten basit bir şey yapmak için bir kitaplık eklemek istemeyen herkes için:

document.querySelector('[name="theme"]:checked').value;

jsfiddle

Mevcut cevapların performansına genel bakış için buraya bakın


1
Bu cevap için teşekkürler. Çünkü herhangi bir şekilde çalışmak için kabul edilen cevabı alamadım.
Chris Holmes

9

Bir tıklama etkinliğinden önce seçilen varsayılan radyo düğmesinin değerini bilmek istiyorsanız şunu deneyin:

alert ($ ( "input: Radyo: işaretli".) val ());

6

Sayfada birden fazla radyo grubunuz varsa, aşağıdaki gibi filtre işlevini kullanabilirsiniz

$('input[type=radio]').change(function(){
    var value = $(this).filter(':checked' ).val();
    alert(value);
});

İşte keman URL'si

http://jsfiddle.net/h6ye7/67/


4
<input type="radio" name="ans3" value="help"> 
<input type="radio" name="ans3" value="help1">
<input type="radio" name="ans3" value="help2">

<input type="radio" name="ans2" value="test"> 
<input type="radio" name="ans2" value="test1">
<input type="radio" name="ans2" value="test2">

<script type="text/javascript">
  var ans3 = jq("input[name='ans3']:checked").val()
  var ans2 = jq("input[name='ans2']:checked").val()
</script>

4

Doğru / yanlış değeri istiyorsanız, şunu kullanın:

  $("input:radio[name=theme]").is(":checked")

3

Belki böyle bir şey?

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

Herhangi bir radyo düğmesine tıkladığınızda, seçilenin sonuçlanacağına inanıyorum, bu yüzden seçilen radyo düğmesi için çağrılacak.


1
@ JQuery 1.3 itibariyle geçersizdir (bundan önce kaldırılmıştır). blog.jquery.com/2009/01/05/help-test-jquery-13-beta-2 "Eski, XPath, stil özellik seçicileri: [@ attr = değer]. Bunlar uzun süredir kullanımdan kaldırıldı - ve biz nihayet onları kaldırıyoruz. Düzeltmek için sadece @ çıkarın! "
racerror

3

Aynı sayfada birden fazla radyo düğmesi grubunuz varsa, radyo düğmesinin değerini almak için bunu da deneyebilirsiniz:

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

Şerefe!


2

ayrıca radyo düğmelerinin aralığını tanımlamak için bir CSS sınıfı kullanabilir ve ardından değeri belirlemek için aşağıdakileri kullanabilir

$('.radio_check:checked').val()

1

Bu benim için çalıştı.

HTML:

<input type="radio" class="radioClass" name="radioName" value="1" />Test<br/>
<input type="radio" class="radioClass" name="radioName" value="2" />Practice<br/>
<input type="radio" class="radioClass" name="radioName" value="3" />Both<br/>

jQuery:

    $ (". radioClass"). her biri (function () {
        if ($ (this) (alt sının:) 'işaretli')
        alert ($ (this) .val ());
    });

Umarım yardımcı olur..


0
$('input:radio[name=theme]').bind(
  'click',
  function(){
    $(this).val();
});

0

ASP.NET RadioButtonKontrollerin değerini almak için sınıf seçiciyi kullanmak her zaman boştur ve bunun nedeni de budur.

RadioButtonKontrolü ASP.NETaşağıdaki gibi oluşturursunuz :

<asp:RadioButton runat="server" ID="rbSingle" GroupName="Type" CssClass="radios" Text="Single" />
<asp:RadioButton runat="server" ID="rbDouble" GroupName="Type" CssClass="radios" Text="Double" />
<asp:RadioButton runat="server" ID="rbTriple" GroupName="Type" CssClass="radios" Text="Triple" />

Ve ASP.NETaşağıdaki HTML'yiRadioButton

<span class="radios"><input id="Content_rbSingle" type="radio" name="ctl00$Content$Type" value="rbSingle" /><label for="Content_rbSingle">Single</label></span>
<span class="radios"><input id="Content_rbDouble" type="radio" name="ctl00$Content$Type" value="rbDouble" /><label for="Content_rbDouble">Double</label></span>
<span class="radios"><input id="Content_rbTriple" type="radio" name="ctl00$Content$Type" value="rbTriple" /><label for="Content_rbTriple">Triple</label></span>

Çünkü kontrol adını veya kimliğini ASP.NETkullanmak istemiyoruz RadioButtonçünkü yukarıdaki kodda gördüğünüz gibi kullanıcının elinden (konteyner adında, form adında, kullanıcı kontrol adında değişiklik ...) değişiklik yapabilirler.

RadioButtonJQuery kullanarak değeri elde etmenin tek mümkün yolu , aşağıdaki gibi tamamen ilgisiz bir soruya bu cevapta belirtildiği gibi css sınıfını kullanmaktır.

$('span.radios input:radio').click(function() {
    var value = $(this).val();
});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.