これを行うために私が考えることができる最も簡単な方法は、次のとおりです。
$('input:checkbox').change(
function(){
var group = this.name;
$(this).siblings('input:checkbox[name="'+ group + '"][checked]').removeProp('checked');
});
JSフィドルデモ。
ただし、いくつかの注意点があります。上記removeProp()
では、jQuery 1.6(およびおそらくそれ以上)に制限されているを使用しています。1.6より前では、代わりに置き換えることが可能であるはずremoveAttr('checked')
です。
ただし、<input type="radio" />
要素の使用を再検討してください。これは、まさにそれらが処理および操作するように設計されているものです。
ロバートからの次のコメントを編集しました(コメント、以下):
私はこれを計画どおりに機能させましたが、私のフォームには別のチェックボックスのグループがあり、名前はまったく異なりますが、それらにも制限があります。ただし、ユーザーがこれらのチェックボックスを複数選択できるようにする必要があります。スクリプトがすべてのチェックボックスグループに影響を与えるようです。実際、name = "'+ group +'"を入力すると、「group」という単語で始まる名前のチェックボックスに機能が制限されると思いました。しかし、そうではないようです。
change
イベントハンドラーを割り当てるセレクターは、ページ上のすべてのチェックボックス$('input:checkbox')
を選択/適用します。
特定のグループのチェックボックスのみに適用するには、次を使用できます。
$('input:checkbox[name="checkboxGroupName"]').change(
function(){
$(this).siblings().removeProp('checked');
});
参照: