JQuery - найдите переключатель по значению

95

Как мне использовать 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");
Бен Сьюардс
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"].

Simon_Weaver
источник