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

<html><headlang="en"><metacharset="UTF-8"><title>form3</title><scripttype="text/javas... <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>

这是代码 我的全不选按钮完全正常 全选只能在页面刷新完使用一次 用了一次之后就再也不能用了 除非再度刷新页面 也就是说我点了一次全选能正常用 如果我去掉几个对勾 再度点击全选 就没反应了
同样 反选也是只能用一次
这是为什么啊
展开
 我来答
cainiaokan
2014-11-07 · TA获得超过2917个赞
知道小有建树答主
回答量:651
采纳率:66%
帮助的人:610万
展开全部
    $('#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中最通用的方式。

金石为开12
2014-11-07
知道答主
回答量:86
采纳率:0%
帮助的人:12.1万
展开全部
楼主,你好,经过测试,代码正常,估计是你的jQuery版本太低了吧.

我使用楼主代码+jquery-1.8.3.js,测试,没问题的!
追问
大哥。。。你没看我用的是1.11.1么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式