我正在尝试选择所有复选框,但是当我取消选择它并再次选择它时,它就不再选择这些框了。虽然它第一次起作用。
这是我的代码:
HTML:
<div id="Everything">
<input type="checkbox" id="all" />Select All
<br />
<br />
<div id="selectThese">
<input type="checkbox" id="First" />First
<br />
<input type="checkbox" id="Second" />Second
<br />
</div>
</div>
JS:
$(function () {
$("#Everything").on("click", "#all", function () {
var carStatus = $("#all").is(':checked');
if (carStatus == true) {
$("#selectThese input").attr("checked", "checked");
} else {
$("#selectThese input").removeAttr("checked");
}
});
});
Jsfiddle链接:http://jsfiddle.net/Epsju/1/
答案 0 :(得分:5)
你需要使用prop()
,因为它接受一个布尔来检查和取消选中该元素,你可以直接使用你的变量,或者只是抛弃变量并使用this.checked
:
$(function () {
$("#Everything").on("change", "#all", function () {
$("#selectThese input").prop("checked", this.checked);
});
});
答案 1 :(得分:1)
当change
使用#car
时,使用#all
也会使用$(function () {
$("#Everything").on("change", "#all", function () {
$('#selectThese :checkbox').prop('checked', $(this).is(':checked'));
});
});
。
{{1}}
答案 2 :(得分:1)
试试这个: - Demo
$(function () {
$("#Everything").on("change", "#all", function () {
$('#selectThese :checkbox').prop('checked', $(this).is(':checked'));
});
});
反之亦然
$('#selectThese :checkbox').on('change', function () {
$('#all').prop('checked', $('#selectThese :checkbox:checked').length == $('#selectThese :checkbox').length)
});