我的jquery复选框 全选/全不选/反选 功能为什么不正常啊

<html>
<head lang="en">
<meta charset="UTF-8">
<title>form3</title>
<script type="text/javascript" src="jquery-1.11.1.js"></script>
</head>
<body>
<form>
你爱好的运动是:<br/>
<input type="checkbox" name="items" value="足球" />足球
<input type="checkbox" name="items" value="篮球" />篮球
<input type="checkbox" name="items" value="排球" />排球
<input type="checkbox" name="items" value="羽毛球" />羽毛球
<input type="button" id="checkAll" value="全选"/>
<input type="button" id="checkNo" value="全不选"/>
<input type="button" id="checkReverse" value="反选"/>
</form>
</body>
<script>

$('#checkAll').click(function(){
$(':checkbox').attr('checked',true);
});
$('#checkNo').click(function(){
$(':checkbox').removeAttr('checked');
});
$('#checkReverse').click(function(){
$(':checkbox').each(function(){
var flag=this.checked;
$(this).attr('checked',function(index,value){
return !value;
});
});
});

</script>
</html>

这是代码 我的全不选按钮完全正常 全选只能在页面刷新完使用一次 用了一次之后就再也不能用了 除非再度刷新页面 也就是说我点了一次全选能正常用 如果我去掉几个对勾 再度点击全选 就没反应了
同样 反选也是只能用一次
这是为什么啊

    $('#checkAll').click(function(){
        $(':checkbox').each(function(i, el){//最好这样。setAttribute有时候会有问题。
el.checked = true;
});
    });
    $('#checkNo').click(function(){
        $(':checkbox').each(function(i, el){
el.checked = false;
});
    });
    $('#checkReverse').click(function(){
        $(':checkbox').each(function(){
           var flag=this.checked;
           $(this).attr('checked',function(index,value){
               return !value;
           });
       });
    });

 


如果你直接

$(':checkbox').attr('checked',true);

你会发现,其实你复选框上已经显示checked="checked"了。按道理是应该处于选中状态的。

但实际上。你再调用

$(':checkbox')[0].checked;//会返回false

很奇怪吧。虽然从attr属性上看,确实是checked的。但是dom元素的直接属性上,却返回false。


jquery的attr调用的是DOM的setAttribute方法。也就是说,

$el.setAttribute('checked', true);和$el.checked = true;是有可能在浏览器上处理不一致的。


最常规的方式总之最正确的。如果遇到兼容性的问题。就尽量采用DHTML中最通用的方式。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-07
楼主,你好,经过测试,代码正常,估计是你的jQuery版本太低了吧.

我使用楼主代码+jquery-1.8.3.js,测试,没问题的!追问

大哥。。。你没看我用的是1.11.1么?

点击反选按钮之后,全选和全不选功能都失效了
true);});$('[name="notall"]').click(function(){$(':

Jquery实现复选框全选与全不选
1、首先web项目结构如图所示,这个结构熟悉的话可以自己调整的。2、然后设置一些较为简单的选项框,这里随便用abcd来代替选项框了。3、这里是jq来实现全选,所以引入jQuery,并且给按钮绑定一个jQuery类型的点击事件即可。4、然后通过prop来设置input的属性即可设置全选了,prop是jq自带的一个方法。5、因为C...

js的问题 我想实现复选框的 全选 或者全不选的功能, 表单中有其他的表单...
比方说你可以给复选框的value设置为数据库记录的ID值啊,这样提交后后台程序就很容易知道究竟是哪几条记录被选中了!因此,利用这种给同一类型表单元素设置相同name的方法,同一表单实际上可以实现一次性提交成百上千行数据(当然这里不考虑效率因素)的目的!

js全选和全不选效果?
js全选反选的问题首先选择器写法就不对document.getElementsByName[game],至少这么写其次由于你所有input标签所有的name属性都不一样,不能批量选择,除非像楼上贴代码那哥们一样,把所有的复选框的name属性都改为game也可以。全选取消全选!--引入angularJS--\/\/创建自定义模块和控制器angular.module(my...

如何用jQuery实现checkbox全选
全不选:(":checkbox").removeAttr("checked");反选:(":checkbox:checked").removeAttr("checked");(":checkbox:not(:checked)").attr("checked","checked");全手写,没有经过测试。完整代码如下,测试通过: 如何用jQuery实现checkbox全选 \/\/全选,全不选 function allSelect(...

全选全不选反选如何实现?
Jquery实现复选框全选与全不选创建一个html,然后在body标签添加如下图所示的代码,主要是在一个表格中包含多选框。然后首要就是要引入jquery的库。注意jquery库的方式:不能写成这种方式。否则无效!大家可以去尝试一下这两个的差别。首先web项目结构如图所示,这个结构熟悉的话可以自己调整的。然后设置...

如何用jquery将勾中复选框的那一行的数据自动添加到同页面的另一个表 ...
这个功能用到的方式就是:①首先获得选中复选框的那一行或者多行数据,这个用,具体的代码要看你的网站结构通过jquery选择器和each循环都可以获得。("input:checkbox[name='the checkbox name']:checked")...②在each循环中,把获取到的每一行,每个单元格的数据,通过jquery的append()的方法,动态创建...

...一组radio全选和全不选,这个怎么实现?要用Jquery吗?谁能给个例子...
#fd3;line-height:1500px;}div#div2{width: 100px;height: 1000px;left: 202px;line-height:1000px;background-color: red;}jQuery(function($){$(":checkbox").change(function(){$("

jquery如何封装插件jquery封装插件的方法
prefixfree用了它,写css时,就不需要加浏览器的前缀了 表单类 jquery-file-upload上传文件组件详细 zTree文件树形视图控件 Treed树编辑器。感觉展示的感觉很像思维导图 FileAPI对文件选择框内的文件的一些处理 表单验证 .Validate详细 jQuery-Validation-Engine 表单元素美化 uniform提供对下拉框,单,复选框,按钮等表单...

如何用js或则jquery过滤特殊字符
1、jQuery使用正则匹配替换特殊字符 function RegeMatch(){ var pattern = new RegExp("[~'!@#$%^&*()-+_=:]"); if($("#name").val() != "" && $("#name").val() != null){ if(pattern.test($("#name").val())){ alert("非法字符!"); $("#name")...

相似回答