【Jquery】关于1.6.1 checked

摘要:【Jquery】关于1.6.1 checked


今天因为刚好有在写checkbox的判断,所以有上网找了一下的数据,不找还好,一找整个让我手足无措,因为最近刚好碰到Jquery改版的关系,所以连带的连里面的一些东西也跟着改了!当然这多亏黑暗前辈所整理的改版重点,简单又明了,当然光看是没有用的....,还是乖乖的打上一篇笔记,以后就不用再临时抱佛脚了

先来看1.5.2的Jquery的attr在干嘛


$(function(){
    alert(document.getElementById("ckb1").getAttribute("checked"));
    alert(document.getElementById("ckb1").checked);
    alert($("#ckb1").attr("checked"));
    });

第一个结果是空字符串,原因就是getAttribute去取的是checked所设定的值,可是他并没有设定值,所以就是空字符串

第二个结果是true,这应该是说,有没有checked(勾选),有的话就是true,没有就是false

第三个就是重点了,结果也是true,所以写判断的时候,我们都会这样写


if($("ckb1").attr("checked")){
//do something
}

But!但是,经过Jquery的改版以后,以下是1.6部分


$(function(){
    alert(document.getElementById("ckb1").getAttribute("checked"));
    alert(document.getElementById("ckb1").checked);
    alert($("#ckb1").attr("checked"));
    alert($("#ckb1").prop("checked"));
    });

第1和第2个结果都一样没变,当然因为他们是javascript是要变什么...

第三个开始才是重点,你会发现它不再是true或false了,而是空字符串?!所以也就是说不能再像刚刚那样写判断式了,那怎么办勒?只好改成1.6新加入的.prop(),也就是说判断式变成要长成这样


if($("ckb1").prop("checked")){
//do something
}

这就明确的跟javascript一样做区分,你要取设定的值,你就要用.getAttribute()或attr(),要取像checked是ture或false(其实这边我不是形容得很好,如果有哪位前辈能告诉我这该怎么讲,那小弟一定会万分感激),就用element.attrName或是.prop()

但这一改,就苦了那些之前用.attr()写判断式的人啦!甚至有些自制的plugin,所幸!很快的官方又出了1.61(真快!),把.attr("checked")结果改成"checked"而不是空字符串了!这样还是可以继续支持用.attr()来写判断式,不过呀,竟然Jquery都已经明确改版要用.prop()了,以后还是照着人家写得走比较好

至于其他的改版重点...因为我资质不好,所以我还需要花点时间消化一下,但黑暗前辈里面都写得非常详细,有兴趣的人可以直接翻他文章会比较快喔