今天在用jquery实现列表页面的checkbox全选全不选的功能时,发现怎么都获取不到checkbox是否被选中的值,看如下代码:
function chkAll(theChk, chkName) { var isChecked = jQuery(theChk).attr("checked"); jQuery("input[name=" + chkName + "]").each(function (index) { jQuery(this).attr("checked", isChecked) }); }
theChk的值始终获取不到,但是如果用下面代码:
function chkAll(theChk, chkName) { var isChecked = jQuery(theChk).attr("checked"); var b = theChk.checked; jQuery("input[name=" + chkName + "]").each(function (index) { jQuery(this).attr("checked", b) }); }
发现原生的js能获取到值,而且设置也没有问题,这到底怎么回事呢,以前也没这问题啊。通过查找资料,终于发现jQuery一个蛋疼的变化,有这么一行:
jQuery 1.6 后请用 prop 取代 attr
将代码改成如下:
function chkAll(theChk, chkName) { var isChecked = jQuery(theChk).prop("checked"); jQuery("input[name=" + chkName + "]").each(function (index) { jQuery(this).prop("checked", isChecked) }); }
一切正常了,不明白这么大范围被使用的一个方法为什么要改个名折腾一下呢,蛋疼。