我制作了一个脚本来控制主人和从属复选框(自动检查和取消选中)。
这是我的JS:
$(document).ready(function() {
$('#myCheck').click(function() {
$('.myCheck').attr('checked', false);
});
$('.myCheck').click(function() {
if ($('.myCheck').is(':checked')) {
$('#myCheck').attr('checked', false);
} else {
$('#myCheck').attr('checked', true); // IT DOESN'T WORK, WHY ?
alert("Checkbox Master must be checked, but it's not!");
}
});
});
这是我的HTML:
<input type="checkbox" id="myCheck" checked="checked" /> Checkbox Master<br />
<input type="checkbox" class="myCheck" value="1" /> Checkbox Slave 1<br />
<input type="checkbox" class="myCheck" value="1" /> Checkbox Slave 2
查看我的简单JsFiddle以了解问题。
编辑1:就像Inser所说,问题发生在jQuery 1.9.2及更高版本上。 jQuery 1.8.3没有更多问题。奇怪...
编辑2: Inser找到解决方案,使用 .prop('checked',true)而不是 .attr('checked',true)。看看下面的评论......
答案 0 :(得分:38)
对新版本的jQuery使用prop方法:
$('#myCheck').prop('checked', true);
$('#myCheck').prop('checked', false);
答案 1 :(得分:3)
你可以试试这个。
$('#myCheck').click(function() {
var checkBoxes = $(this).siblings('input[type=checkbox]');
checkBoxes.prop('checked', $(this).is(':checked') ? true : false);
});
答案 2 :(得分:0)
也许您只想查看主复选框:
$('#myCheck').click(function() {
$('.myCheck').attr('checked', false);
$(this).attr('checked', true);
});
请参阅此fiddle。
答案 3 :(得分:0)
$(':checkbox').attr('checked',false);
虽然这可以设置“已检查”属性,但它不会在视觉中继续显示。和$(':checkbox').prop('checked', true);
这个完美无缺!希望这可以提供一些帮助。
答案 4 :(得分:0)
我为你写了一个插件:
$.fn.dependantCheckbox = function() {
var $targ = $(this);
function syncSelection(group, action) {
$targ.each(function() {
if ($(this).data('checkbox-group') === group) {
$(this).prop('checked', action);
}
});
};
$('input[type="checkbox"][data-checkbox-group]').on('change', function() {
var groupSelection = $(this).data('checkbox-group');
var isChecked = $(this).prop('checked');
syncSelection(groupSelection, isChecked);
});
}
$('input[type="checkbox"][data-checkbox-group]').dependantCheckbox();
<input data-checkbox-group="1" type="checkbox" id="test" />
<label for="test">test</label>
<input data-checkbox-group="1" type="checkbox" id="test2" />
<label for="test2">test2</label>
<input data-checkbox-group="2" type="checkbox" id="test3" />
<label for="test3">test3</label>
<input data-checkbox-group="2" type="checkbox" id="test4" />
<label for="test4">test4</label>