5

いくつかのラジオボタンがある場合:

<input type="radio" name="test" value="apple"> Apple<br/>
<input type="radio" name="test" value="banana" CHECKED> Banana<br/>
<input type="radio" name="test" value="carrot"> Carrot<br/>

次に、jQuery でラジオ グループを次のように定義します。

var test = $('input:radio[name="test"]')


書き換えずに変数テストに基づいてチェックされた要素の値を取得するにはどうすればよいですか

var test_val = $('input:radio[name="test"]:checked').val();

私は両方を試しました

$(test):checked.val();
test:checked.val();

そして、変更機能の一部として、これも試しました:

$(test).change(function() {
    if ($(this):checked.val() == 'no') {
        $('#featured').stop().fadeOut();
    } else if ($(this):checked.val() == 'yes') {
        $('#featured').stop().fadeIn();
    }
});

これが可能かどうか、または値を取得するために完全な入力セレクターを書き直す必要があるかどうか疑問に思っています。

PS
IE8 がセレクターをサポートしていない場合:checked、代わりに何を使用できますか?

4

4 に答える 4

9

.filter()ヘルプを使用できます:

test.filter('input:checked')

.filter()コールバックもサポートしています:

test.filter(function() {
    return this.name === 'test' && this.checked
});

:checkedセレクターが IE8 で動作しないことを知りませんでした。それが真の場合、後者の例が機能するはずです (ノード expando に直接アクセスします)。

于 2011-01-31T09:08:48.670 に答える
0

「CSS 構文」と JavaScript 構文を混在させようとしています。それはうまくいきません。

jQuery のfilter()メソッドを使用して、以前の jQuery クエリで選択された要素を制限できます。

var test = $('input:radio[name="test"]')

var test_val = test.filter(":checked").val();
于 2011-01-31T09:12:24.407 に答える
0

これを試して...

$(test).change(function() {
 if ($(this).is(':checked').val() == 'no'){
   $('#featured').stop().fadeOut();
 } else if ($(this).is(':checked').val() == 'yes'){
  $('#featured').stop().fadeIn();
 }
});
于 2011-01-31T09:15:58.530 に答える
0

このjsFiddlevar testに示すように、.filter() 関数を使用できます

var test = $('input:radio[name="test"]');
alert(test.filter(':checked').val());
于 2011-01-31T09:17:57.807 に答える