我读过check/uncheck all checkboxes with jquery 1.10.2,他提到不要将函数放在正确的回调中。我在chrome dev工具中进行了调试,并注意到在使用我的其他jquery函数添加一行后,复选框监听器不会被点击。
根据jquery"准备好"当DOM完成加载时,会触发docs,document.ready' s回调。通过我的jquery处理程序添加一行后,DOM已经完成加载,这就是我看到新行的方式。所以根据我的理解,我应该可以让我的复选框听众进入"准备好"回调,不是吗?这是我的代码:
$(document).ready(function() {
var i = 1;
$("#add_row").click(function() {
$('#addr' + i).html("<td><input type='checkbox' class='form-control case'></td>" +
"<td><input name='name" + i + "' type='text' placeholder='Name' " +
"class='form-control input-md'></td>" +
"<td><input name='mail" + i + "' type='text' placeholder='Mail' " +
"class='form-control input-md'></td>"
);
$('#tab_logic').append('<tr id="addr' + (i + 1) + '"></tr>');
i++;
});
$("#delete_btn_" + i).click(function(event) {
if (i > 1) {
$("#addr" + (i - 1)).html('');
i--;
}
});
// add multiple select / deselect functionality
$("#selectall").click(function () {
$('.case').prop('checked', this.checked);
});
/* Listen to any checkbox. After one is toggled,
if all checkboxes are selected, select the checkall checkbox
otherwise checkall checkbox shouldn't be checked */
$(".case").click(function() {
if($(".case").length == $(".case:checked").length) {
$("#selectall").prop("checked", "checked");
} else {
$("#selectall").removeProp("checked");
}
});
});
答案 0 :(得分:0)
$("body").on('change','.case',function() {
if($(".case").length == $(".case:checked").length) {
$("#selectall").prop("checked", "checked");
} else {
$("#selectall").removeProp("checked");
}
});