我遇到以下问题(我正在更新的旧系统):
<div id='list'>
。'#list'
来缓存html,这样我们就可以在其他几个地方重新显示。问题: 缓存的html始终位于复选框值之前,而不是
之后html代码:
<div id="list">
<input id="checkboxRessource_413" type="checkbox" onclick="throwXMLHttpRequest('modif.php','', '4', '413','', 'contributeurUpdate');">name 1
<br>
<input id="checkboxRessource_414" type="checkbox" onclick="throwXMLHttpRequest('modif.php','', '4', '414','', 'contributeurUpdate');">name 2
</div>
ajax文件返回以下javascript:
var htmlList = $("#list").html();
问题是htmlList
包含html在选中复选框之前,我该如何解决这个问题?
答案 0 :(得分:1)
根据您使用的jQuery版本,onclick
事件将在复选框的值实际更改之前触发并处理。我建议使用onchange
事件而不是onclick
,因为这样可以确保在复选框选中或取消选中后才会运行该事件。
此外,$.html()
不会返回复选框的状态。每当您选中复选框时,DOM中的实际html都不会被更改; checked
状态在输入中存储为property
,而不是attributed
。您需要手动检查每个复选框的checked
状态,并将该信息发送到.php页面。请参阅此处的示例Fiddle。
var checkedStatus = []; // send this array to your php
$(':input', '#list').each(function () {
checkedStatus.push($(this).prop('checked'));
});