今做一个网页,实现一个很简单的功能:给出一个“全选”的复选框以及若干个受其控制的复选框,点击“全选”复选框可以全选或全取消其他的几个复选框。就这么一个简单的功能,却让我折腾了很久,最终发现竟然是jQuery的一个bug。废话少说,直接上代码。
<input id="chkAll" type="checkbox" /> 全部 <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag0"></span> <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag1"></span> <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag2"></span> <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag3"></span> <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag4"></span> <input type="checkbox" name="chkgrpFlag" /> <span class="icon-Flag5"></span>
显示效果:
js代码:
$("#chkAll").click(function () { $(‘input[name="chkgrpFlag"]‘).attr("checked", this.checked); });
使用的jQuery版本为1.11.2,结果第一次点击“全部”复选框,全选了其他的复选框;第二次点击“全部”复选框,全取消了其他的复选框;从第三次开始就无效了。测试了IE和Chrome都是如此。
后来改用1.7.2版本的jQuery,问题消失。由于项目中不方便更换jQuery版本,无奈只好改用DOM操作。
看来高版本的jQuery也存在某些缺陷。
时间: 2024-10-07 02:01:53