的jsfiddle
信息
问题
第二次单击单选按钮时,单击不会从所有单选按钮中删除选中的单选按钮。这是为什么?溶液
HTML
<div class="panel">
<label for="radio-1">Radio 1</label>
<label for="radio-2">Radio 2</label>
<label for="radio-3">Radio 3</label>
<input type="radio" id="radio-1" name="group-1">
<input type="radio" id="radio-2" name="group-1">
<input type="radio" id="radio-3" name="group-1">
</div>
的jQuery
jQuery(document).ready(function($) {
$('.panel label').on( "click", function(e) {
console.log('clicked');
var my_id = $(this).attr('for');
if( $('.panel #' + my_id).is(':checked') ) {
console.log('checked');
$('.panel input[type="radio"]').prop('checked', false);
}
});
});
答案 0 :(得分:4)
我认为问题是,带有id属性的标签上的默认点击行为会强制执行此操作。我改变了你的javascript来做你想做的事情,并增加了一点调试:
jQuery(document).ready(function($) {
$('.panel label').on( "click", function(e) {
// prevent the html to automatically check the corresponding checkbox
e.preventDefault();
var my_id = $(this).attr('for');
console.log('clicked: ' + my_id);
if( $('#' + my_id).is(':checked') ) {
console.log('checked: ' + my_id);
$('#' + my_id).prop('checked', false);
} else {
console.log('check now: ' + my_id);
$('#' + my_id).prop('checked', true);
}
});
});
但您可能还想将该行为应用于点击单选按钮本身?