JQuery - знайти перемикач за значенням


95

Як я можу використовувати JQuery, щоб знайти перемикач за його значенням?

Відповіді:


142

Спробуйте це:

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

Буде вибрано всі перемикачі з атрибутом value="foobar".


Дякую, я використав його як такий: jQuery.each (cookieObj, function (i, val) {$ (": radio [value = val]"). Attr ('check', true);});
ван

3
@test: Спробуйте замість цього:function(i, val) { $(":radio[value="+val+"]").attr('checked',true); }
Gumbo

1
@Gumbo, якщо ми даємо цій функції ім'я, чи можемо ми назвати це так ?: $ CheckedRadioValues ​​= findChecked ("значення");
Бен Сьюардс

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

Використовувати селектор ідентифікатора, як цей (наступний приклад), погано, оскільки у вас не повинно бути декількох елементів з однаковим ідентифікатором. Я припускаю, хтось, хто знайшов це питання, вже знає, що це погано.

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

Наступне про те, що :radioможе представляти чи не цікавити

Оскільки: radio - це розширення jQuery і не є частиною специфікації CSS, запити, що використовують: radio, не можуть скористатися перевагами підвищення продуктивності, передбаченими власним методом DOM querySelectorAll (). Для кращої роботи в сучасних браузерах використовуйте замість [type = "radio"].

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.