今天在用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)
    });
}

一切正常了,不明白这么大范围被使用的一个方法为什么要改个名折腾一下呢,蛋疼。

你可能感兴趣的内容
0条评论

selfly

交流QQ群:32261424
Owner