11

jQuery を使用してプログラムでラジオ ボタンを選択しようとしましたが、checked 属性を変更するのと同じくらい簡単だと思いました。

ただし、次のコードは、Chrome/Firefox の jQuery 1.9.1 で期待されていることを実行していないようです。

予想される動作:ラジオ ボタンを囲む div をクリックします -> 'checked' 属性が設定されます -> DOM でチェックされた状態でレンダリングされます。

実際の動作:ラジオ ボタンを囲む div をクリックします -> 'checked' 属性が設定されます -> クリックされた最初と 2 番目のボタンの DOM でチェック済みがレンダリングされ、後続のボタンはチェック済みとしてレンダリングされません。

jQuery:

$('div.form-type-radio').on('click', function () {    
    var Id = $(this).find('input[type=radio]').attr('id');   
    $('form input[type=radio]:not(#'+Id+')').removeAttr('checked');   
    $('#' + Id).attr('checked', 'checked');    
    console.log($('#' + Id));    
});

ここにjsFiddleがあります - http://jsfiddle.net/GL9gC/

以前のバージョンの jQuery で同じコードを試してみましたが、すべて期待どおりに動作します。

4

2 に答える 2

23

この場合、attr() / removeAttr( )の代わりにprop()を使用する必要があります。

これは動作中のjsFiddleです。

jQuery:

$('div.form-type-radio').on('click', function () {
    var Id = $(this).find('input[type=radio]').prop('id');
    $('form input[type=radio]:not(#'+Id+')').prop('checked');
    $('#' + Id).prop('checked', 'checked');
    console.log($('#' + Id));
});
于 2013-04-05T22:49:30.880 に答える