JQuery - znajdź przycisk opcji według wartości

95

Jak użyć JQuery, aby znaleźć przycisk opcji według jego wartości?

awangarda
źródło

Odpowiedzi:

142

Spróbuj tego:

$(":radio[value=foobar]")

Spowoduje to zaznaczenie wszystkich przycisków opcji z atrybutem value="foobar".

Gumbo
źródło
Dzięki użyłem go jako takiego: jQuery.each (cookieObj, function (i, val) {$ (": radio [wartość = wart]"). Attr ('sprawdzone', prawda);});
van
3
@test: Spróbuj tego zamiast:function(i, val) { $(":radio[value="+val+"]").attr('checked',true); }
Gumbo
1
@Gumbo, jeśli nadamy tej funkcji nazwę, czy możemy ją tak nazwać ?: $CheckRadioValues ​​= findChecked ("value");
Ben Sewards,
25

Używam jQuery 1.6 i to nie zadziałało: $(":radio[value=foobar]").attr('checked',true);

Zamiast tego używam: $('[value="foobar"]').attr('checked',true); i działa świetnie.

Rzeczywisty kod, którego używam, najpierw czyści radio i używa propzamiastattr

$('[name=menuRadio]').prop('checked',false);

$('[name=menuRadio][value="Bar Menu"]').prop('checked',true);
dogatoniczny
źródło
czy to błąd, który został naprawiony? czy powinniśmy nadal umieszczać wartości w cudzysłowie?
Simon_Weaver,
19

Można to również osiągnąć w ten sposób:

$('input[type="radio"][value="aaa"]').val();

Spowoduje to wybranie radia, które ma wartość aaa


Z .filter()metodą:

var radio =  $('input[type="radio"]').filter(function(){
                       return this.value === 'aaa';
                      }).val();
Jai
źródło
1
to rzeczywiście wybrać wszystkie przyciski radiowe i zmieniać ich wartości , aby aaanastępnie zawróci'aaa'
bendman
5

powiedz, że masz coś takiego w HTML:

<fieldset>
    <input type="radio" name="UI_opt" value="alerter" checked> Alerter<br/>
    <input type="radio" name="UI_opt" value="printer"> Printer<br/>
    <input type="radio" name="UI_opt" value="consoler"> Consoler<br/>
</fieldset>

wtedy to działa.

$("fieldset input[name='UI_opt'][checked]").val()
dylan trevena
źródło
2

Pełen selektor wyglądałby tak:

bool shipToBilling = $("[name=ShipToBillingAddress][value=True]")

biorąc pod uwagę, że prawdopodobnie masz więcej niż jedną taką grupę przycisków opcji

<input name="ShipToBillingAddress" type="radio" value="True" checked="checked">
<input name="ShipToBillingAddress" type="radio" value="False">

<input name="SomethingElse" type="radio" value="True" checked="checked">
<input name="SomethingElse" type="radio" value="False">

Używanie takiego selektora identyfikatora (następny przykład) jest złe, ponieważ nie powinno się mieć wielu elementów o tym samym identyfikatorze. Zakładam, że ktoś, kto znalazł to pytanie, już wie, że jest źle.

$("#DidYouEnjoyTheMovie:radio[value=yes]")

Poniższe informacje :radiomogą być interesujące lub nie

Ponieważ: radio jest rozszerzeniem jQuery i nie jest częścią specyfikacji CSS, zapytania używające: radio nie mogą korzystać ze zwiększenia wydajności zapewnianego przez natywną metodę DOM querySelectorAll (). Aby uzyskać lepszą wydajność w nowoczesnych przeglądarkach, użyj zamiast tego [type = "radio"].

Simon_Weaver
źródło