jQuery关于checkbox的一个bug

今做一个网页,实现一个很简单的功能:给出一个“全选”的复选框以及若干个受其控制的复选框,点击“全选”复选框可以全选或全取消其他的几个复选框。就这么一个简单的功能,却让我折腾了很久,最终发现竟然是jQuery的一个bug。废话少说,直接上代码。

<input id="chkAll" type="checkbox" />&nbsp;全部
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<span class="icon-Flag0"></span>
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<span class="icon-Flag1"></span>
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<span class="icon-Flag2"></span>
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<span class="icon-Flag3"></span>
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<span class="icon-Flag4"></span>
<input type="checkbox" name="chkgrpFlag"  />&nbsp;<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

jQuery关于checkbox的一个bug的相关文章

解决用Jquery实现 Checkbox 显示后台Bool类型数据时出现的Bug

最近在进行一个EasyUI框架的搭建过过程中,需要把数据库中的Bool类型用Checkbox来显示,开始写的是 $("chkIsMech").checked=Json.IsMenu, 后来又试了$("#chkIsMenu").attr("checked", json.IsMenu);同样不行.又百度了好多,终于有篇文章出现了同样的问题,欣喜之余赶紧粘过来: document.getElementById("chkIsMenu"

jQuery对checkbox选中和取消选中操作

最近做项目发现jQuery对checkbox的全选和非全选操作只有第一次生效,以后就不生效了,不知道是不是jQuery版本库的问题,最终找到了一个解决方案: 把原来的下面这两句: $('input').attr('checked','checked'); $('input').attr('checked',false); 改成下面的: $('input').prop('checked','checked'); $(this).removeAttr("checked"); 欢迎大神们批评

jquery获取checkbox被选中的值

只用一个循环,就可以找出被选中的checkbox的值 var s; $("[name = b]:checkbox").each(function () {                   if (this.checked) {                       s += $(this).val() + "|";                   }               });alert(s); 这样就可以了 jquery获取checkbox被

JQuery操作CheckBox 第二次无法选中的问题

用JQuery做CheckBox全选和反选的时候,遇到一个问题.当用JQ控制全选,全取消一次以后,再次点击全选,发现代码变了,但是CheckBox没有处于选中状态. 百度后得知: 我使用的方法是 $("#id").attr("checked",true); 方式,jQuery API明确说明,1.6+的jQuery要用prop,尤其是checkBox的checked的属性的判断.因此修改为 $("input[type='checkbox']").

jQuery 判断checkbox是否被选中 4种方法

下午写JS验证,有一个需求需要判断 checkbox是否被选择,查阅相关资料后,总结以下4种方法,分享给大家. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery 判断checkbox是否被选中 4种方法</title> <script src="jquery-1.8.3.min

记用ajax的一个bug

遇到一个bug,IE8,只有第一次功能正确,后面都不生效.我看了一下,确实IE存在问题,调试发现根本不进入后台,于是我猜测是缓存的问题,于是加上cache:false,解决了问题. $.ajax( { url: "ParaSetting/OpenOrCloseParam", data: { Id: id }, cache:false, type: "get", success: function (data) { alert(data); if (data ===

jquery的checkbox,radio,select等方法总结

1.checkbox日常jquery操作. 现在我们以下面的html为例进行checkbox的操作. <input id="checkAll" type="checkbox" />全选 <input name="subBox" type="checkbox" />项1 <input name="subBox" type="checkbox" />项2

在chrome下-webkit-box布局的一个bug

chrome,也就是webkit内核下作的检测, chrome版本是40, -webkit-box这种布局在移动端用的比较多,主要是因为pc端的浏览器内核参差不齐. 因为在写HTML的时候看上了-webkit-box的自动根据浏览器窗口大小自动排列的智能布局, 所以我也入了坑, 坑是这样的: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml

jQuery实现checkbox(复选框)选中、全选反选代码

谁都知道 在html 如果一个复选框被选中 是 checked="checked". 但是我们如果用jquery alert($("#id").attr("checked")) 会提示您是true而不是checked 所以很多朋友判断  if($("#id").attr("checked")=="true") 这个是错误的,其实应该是 if($("#id").attr