1

ラジオボックスにリセットボタンを動的に作成しようとしていますが、ユーザーがボタンをクリックするとリセットボタンが既存の選択肢のチェックを外しますが、クリックしても何も起こりません。私はおそらく明らかな何かを見逃していますが、何がわかりません。

http://jsfiddle.net/sFUBV/5/

$('.surveyor_radio').parent().parent().append('<div class="reset-button">A reset button</div>');

$('.reset-button').click(function () {
    $('#form input[type="radio":checked]').each(function () {
        $(this).prop('checked', false);
    });
});

$('fieldset').each(function () {
    var qid = $(this).attr('id');
    $('.reset-button', $(this)).attr('data-question-id', qid);
});
4

4 に答える 4

1

交換

$('#form input[type="radio":checked]')

$('#form input[type="radio"]:checked')

ただし、コードはラジオ ボタンのグループを区別せず、フォーム全体ですべてのラジオ ボタンのチェックを外すだけであることに注意してください。

幸いなことに、すでにdata-question-idラジオ ボタンに が保存されているので、それを使用して の代わりにコンテキストを提供できます#form

$('.reset-button').click(function () {
    $('input[type="radio"]:checked','#'+$(this).data('question-id')).each(function () {
        $(this).prop('checked', false);
    });
});

http://jsfiddle.net/mblase75/sFUBV/10/

nzifnab が指摘したように、さらに単純化することもできます。

$('.reset-button').click(function () {
    $('input[type="radio"]','#'+$(this).data('question-id')).prop('checked', false);
});
于 2013-03-28T20:44:20.060 に答える
1

を使用したくない場合removeAttrは、propメソッドで十分です。

.eachjquery コレクションで呼び出されるほとんどの jquery メソッドは、そのコレクションの各オブジェクトで既に実行されているため、どちらも使用する必要はありません。

これは機能します: http://jsfiddle.net/sFUBV/14/

$('.surveyor_radio').parent().parent().append('<div class="reset-button">A reset button</div>');

$('.reset-button').on('click', function () {
  $(this).
    closest('li.input').
    find('input[type=radio]').
    prop('checked', false);
});

セレクターを追加する理由はありませ:checkedん。とにかくすべてのチェックを外しているので、チェックされていないもののチェックを外すとどうなるでしょうか? どちらでも同じことが起こります。

受け入れられた回答が示すように、必ずしも質問IDで行う必要はないことにも注意してください。これは単に現在の 内のすべてのラジオ ボタンを調べるだけなli.inputので、質問 ID や無意味な補間について心配することなく、どこでもこれを使用できます。

onまた、またはとは対照的に、イベントをバインドするために使用する必要がありclickますlive

于 2013-03-28T21:01:03.647 に答える
0

これは機能します:

$("input[type='radio']:checked").each(function () {
    $(this).removeAttr('checked');
});

フィドルをチェックしてください:http://jsfiddle.net/sFUBV/9/

于 2013-03-28T20:50:58.093 に答える
0

each() 関数の代わりにこの行を試してください

$('.reset-button').click(function () {
    $('#form input[type="radio"]:checked').prop('checked', false);
});
于 2013-03-29T12:53:50.980 に答える