此代码仅检测一次更改复选框。在我使用load()函数后,未检测到复选框中的另一个更改。
这个问题的解决方案是什么?
谢谢,
Jquery的:
$(document).ready(function () {
$(".checkTask").on("change", changed);
});
function changed() {
var id = $(this).attr("idTask");
var csrftoken = getCookie('csrftoken');
// Checked
if ($(this).prop('checked')) {
$.post("/link/", {id: id, csrfmiddlewaretoken: csrftoken}, function (data) {
$("#tableTask").load(location.href + " #tableTask>*");
});
}
// Unchecked
else {
$.post("/link/", {
id: id,
csrfmiddlewaretoken: csrftoken
}, function (data) {
$("#tableTask").load(location.href + " #tableTask>*");
});
}
}
HTML:
<table class="table table-condensed table-hover table-striped">
<tbody id="tableTask">
<tr>
<td>
<input class="checkTask" type="checkbox" idTask="{{ task.id }}"/>
</td>
</tr>
</tbody>
</table>
答案 0 :(得分:0)
当您在ajax回调中重新加载$("#tableTask")
的内容时,您将清除之前的复选框事件处理程序。
将$(".checkTask").on("change", changed);
重写为:
$(document).on("change", ".checkTask", changed);
或
$("#tableTask").on("change", ".checkTask", changed);
因此您将继续将此事件处理程序添加到新创建的复选框中。