Jquery,一个关于复选框的bug,请神!

菜鸟中的老大 2016-10-24 06:17:24

/* 改变"父级"checkbox为true */
top_group.each(function(){

console.log($(this).is(':checked'));

$(this).attr("checked",true);

console.log($(this).is(':checked'));

});

一段子复选框控制父复选框的代码,页面复选框的初始选中状态都为false,当子复选框全部选中时,父复选框才选中。
下面有父复选框选中状态变化的截图,求助:为什么第二遍执行时,两次都为false,应该是false,true,这样循环下去!



全部代码:
	$(".son-group :checkbox").change(function(){

if($(this).is(':checked'))
{
var whether = true;

/* 查询点击checkbox的另外"同级的checkbox" */
var box_siblings = $(this).parents('.col-lg-6,.col-lg-offset-1').siblings().find(":checkbox");

/* 遍历另外"同级的checkbox",只要一个false,whether为false */
box_siblings.each(function(){

if(!$(this).is(':checked'))
{
whether = false;
}

});

/* 判定whether是否为true */
if(whether)
{
/* 查询点击checkbox的"父级"checkbox */
var top_group = $(this).parents('.son-group').prev().find(":checkbox");

/* 改变"父级"checkbox为true */
top_group.each(function(){

console.log($(this).is(':checked'));

$(this).attr("checked",true);

console.log($(this).is(':checked'));

});
}
}
else
{
/* 查询点击checkbox的"父级"checkbox */
var top_group = $(this).parents('.son-group').prev().find(":checkbox");

/* 改变"父级"checkbox为false */
top_group.each(function(){
$(this).attr("checked",false);
});
}
});
...全文
132 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
表示遇到过这个问题, 如一楼所言, JQ1.6之前都可以, 下面这位大神解释的比较详细 http://www.cnblogs.com/wangsu/archive/2013/04/29/3050461.html
菜鸟中的老大 2016-10-24
  • 打赏
  • 举报
回复
有其他不同的意见吗?畅所欲言
菜鸟中的老大 2016-10-24
  • 打赏
  • 举报
回复
好的,明天上班试试下,谢谢快速回复
当作看不见 2016-10-24
  • 打赏
  • 举报
回复
不要使用attr ,用prop,代替就没有问题,attr 是jquery 版本1.6 之前的用法,1.6之后使用prop ,两者的区别去看文档,

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧