jQuery - ค้นหาปุ่มตัวเลือกตามค่า


คำตอบ:


142

ลองสิ่งนี้:

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

value="foobar"นี้จะเลือกปุ่มทั้งหมดที่มีแอตทริบิวต์


ขอบคุณที่ใช้มัน: jQuery.each (cookieObj, function (i, val) {$ (": radio [value = val]"). attr ('checked', true);});
รถตู้

3
@test: ลองสิ่งนี้แทน:function(i, val) { $(":radio[value="+val+"]").attr('checked',true); }
Gumbo

1
@Gumbo ถ้าเราตั้งชื่อฟังก์ชันนั้นเราจะเรียกแบบนั้นได้ไหม: $ checkedRadioValues ​​= findChecked ("value");
Ben Sewards

25

ฉันใช้ jQuery 1.6 และไม่ได้ผลสำหรับฉัน: $(":radio[value=foobar]").attr('checked',true);

แต่ฉันใช้: $('[value="foobar"]').attr('checked',true); และใช้งานได้ดี

รหัสจริงที่ฉันใช้จะล้างวิทยุก่อนและใช้propแทนattr

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

$('[name=menuRadio][value="Bar Menu"]').prop('checked',true);

นี่คือข้อบกพร่องที่ได้รับการแก้ไขหรือไม่ หรือเราควรใส่เครื่องหมายคำพูดไว้รอบ ๆ ค่า?
Simon_Weaver

19

สิ่งนี้สามารถทำได้เช่นกัน:

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

เพื่อเลือกวิทยุที่มีค่า aaa


ด้วย.filter()วิธีการ:

var radio =  $('input[type="radio"]').filter(function(){
                       return this.value === 'aaa';
                      }).val();

1
สิ่งนี้จะเลือกปุ่มตัวเลือกทั้งหมดและเปลี่ยนค่าเพื่อaaaส่งกลับ'aaa'
bendman

5

พูดว่าคุณมีสิ่งนี้ใน 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>

สิ่งนี้ก็ใช้ได้ผล

$("fieldset input[name='UI_opt'][checked]").val()

2

ตัวเลือกแบบเต็มจะมีลักษณะดังนี้:

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

เนื่องจากคุณอาจมีกลุ่มปุ่มตัวเลือกแบบนี้มากกว่าหนึ่งกลุ่ม

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

การใช้ตัวเลือก ID เช่นนี้ (ตัวอย่างถัดไป) ไม่ดีเนื่องจากคุณไม่ควรมีหลายองค์ประกอบที่มี ID เดียวกัน ฉันถือว่ามีคนพบคำถามนี้แล้วรู้ว่ามันไม่ดี

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

สิ่งต่อไปนี้:radioอาจเป็นที่สนใจหรือไม่ก็ได้

เนื่องจาก: radio เป็นส่วนขยาย jQuery และไม่ได้เป็นส่วนหนึ่งของข้อกำหนด CSS การสืบค้นโดยใช้: radio จึงไม่สามารถใช้ประโยชน์จากการเพิ่มประสิทธิภาพที่มาจากเมธอด DOM querySelectorAll () ดั้งเดิมได้ เพื่อประสิทธิภาพที่ดีขึ้นในเบราว์เซอร์สมัยใหม่ให้ใช้ [type = "radio"] แทน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.