我正在尝试设置一个复选框,检查所有子复选框,如树视图。以下代码在Firefox和Chrome中运行良好,但在IE中,需要两次单击才能使其正常工作。我错过了什么?
HTML
<input type="checkbox" name="org" value="orgs" id="orgs" />
<label for="All">Organizations</label>
<ul id="orglist">
<li>
<input type="checkbox" name="org" value="1" id="1" />
<label for="1">Org 1</label>
</li>
<li>
<input type="checkbox" name="org" value="1" id="2" />
<label for="2">Org 2</label>
</li>
</ul>
使用Javascript / Jquery的
$(document).ready(function () {
$("#orgs").change(function () {
if ($(this).attr("checked")) {
$("#navform #orglist :checkbox").attr("checked", true);
}
else {
$("#navform #orglist :checkbox").attr("checked", false);
}
});
});
答案 0 :(得分:1)
对我来说问题是我只使用checked
而不是checked="checked"
。愚蠢的错误,但希望有助于某人。
答案 1 :(得分:0)
对于IE,很可能复选框的状态存在疑问。尝试将checked属性设置为false或初始页面加载时的任何内容。例如:
<input type="checkbox" name="or" value="1" id="1" checked="false" />
答案 2 :(得分:0)
不要寻找属性,让jQuery做更多工作:
if ($(this).is(":checked")) {
$("#navform #orglist :checkbox").attr("checked", "checked");
}
else {
$("#navform #orglist :checkbox").removeAttr("checked");
}