saber 酱的抱枕

Fly me to the moon

08/22
2015
学习

jq中获取checkbox的checked值

$("#box").change(function  () {
		//此时获取的已经是change后的值了
		if($(this).prop("checked")){//如果全选按钮已经被选中
			$(".sub").prop("checked",this.checked); 
		}else{//如果全选按钮未被选中
			$(".sub").prop("checked",false); 
		}
});

#box是全选按钮(它也是个复选框),.sub是底下各个条目的复选框。用的是jq的.prop()方法。

刚才同学做全选功能,出了问题,来问我。我拿到代码试了试,点击全选按钮,然后获取并判断它的checked值,结果没反应。

然后去调试,发现发现获取到的复选框(checkbox)的checked值始终是undefined,选中了也不变。这还怎么做?

难道要把复选框放到form标签里才行?或者是需要手动加上checked这个属性?都试了试,完全没用

想想两年前还在学校的时候,就做过全选和反选这样的功能,怎么现在就做不出来了呢?这个郁闷啊

于是去百度“jq怎么获取checked值”,百度出来的各个教程的方法和我一样啊,怎么人家能用我就不能用?

最后直接百度“checkbox checked undefined”,总算找到答案了。

原来,在jquery1.6版本有了变更:

checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。

也就是说如果checkbox在页面加载完毕时是选中的,那么返回的永远都是checked,如果一开始没被选中,则返回的永远是undefined。

然后怎么办呢, 用jq的.prop()方法。例子就是上边的代码了。

真想说过期信息害死人,以后搜索技术问题的时候最好去搜索选项里,把结果限制在最近一年之内。

jq中获取checkbox的checked值