摘要:【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()了,以後還是照著人家寫得走比較好
至於其他的改版重點...因為我資質不好,所以我還需要花點時間消化一下,但黑暗前輩裡面都寫得非常詳細,有興趣的人可以直接翻他文章會比較快喔