jquery1.6以下版本獲取checkbox的選中狀態:
$('.ck').attr('checked'); $('.ck').attr('checked',true);//全選 $('.ck').removeAttr('checked');//全不選
發現,以上代碼,無論input checkbox是選中還是未選中狀態,無論IE還是Chrome,返回結果都是undefinded;
查閱發現:jquery1.6版本對此作了修改,checked屬性在頁面初始化的時候就已經初始化好了,不會隨着狀態改變而變。也就是說checkbox在頁面加載完畢是選中狀態,則永遠返回checked,如果一開始沒被選中,則永遠返回undefinded。
jquery1.6及以上版本獲取checkbox的選中狀態:
$('.ck').prop('checked'); $('.ck').prop('checked',true);//選中 $('.ck').prop('checked', function(i, attr){return !attr;});//反選
突然想到,可以通過反選實現c/s系統中的RadioBox的單選框功能,如下:
<div> <li style="margin: 5px; float: left; min-width:200px;min-height:24px;"> <input class="ckbox" id="ck_0" type="checkbox" checked /><label for="ck_0">是</label><!--默認選中css樣式參考http://www.csscheckbox.com/checkboxes/1/--> </li> <li style="margin: 5px; float: left; min-width:200px;min-height:24px;"> <input class="ckbox" id="ck_1" type="checkbox" /><label for="ck_1">否</label> </li> </div>
JS實現單選控制如下:
//這兒實現的只針對兩個checkbox的情況,多個checkbox自由發揮唄 $('.ckbox').click(function () { $('.ckbox').not($(this)).prop('checked', function (i, attr) { return !attr; });//除自身外反選 });
效果如下圖:
在Jquery 1.6及之后,新加了一個方法prop(),通過attr方法去獲得屬性,通過prop方法去獲得特性。在遇到要獲取或設置checked,selected,readonly和disabled等屬性時,用prop方法。
官方解釋prop():獲取在匹配的元素集中的第一個元素的屬性值。
大家都知道有的瀏覽器只要寫disabled,checked就可以了,而有的要寫成disabled = "disabled",checked="checked",比如用attr("checked")獲取checkbox的checked屬性時選中的時候可以取到值,值為"checked"但沒選中獲取值就是undefined。
jq提供新的方法“prop”來獲取這些屬性,就是來解決這個問題的,以前我們使用attr獲取checked屬性時返回"checked"和"",現在使用prop方法獲取屬性則統一返回true和false。
那么,什么時候使用attr(),什么時候使用prop()?
1.添加屬性名稱該屬性就會生效應該使用prop();
2.是有true,false兩個屬性使用prop();
3.其他則使用attr();
以下是官方建議attr(),prop()的使用:
Attribute/Property |
.attr() |
.prop() |
accesskey |
√ |
|
align |
√ |
|
async |
√ |
√ |
autofocus |
√ |
√ |
checked |
√ |
√ |
class |
√ |
|
contenteditable |
√ |
|
draggable |
√ |
|
href |
√ |
|
id |
√ |
|
label |
√ |
|
location ( i.e. window.location ) |
√ |
√ |
multiple |
√ |
√ |
readOnly |
√ |
√ |
rel |
√ |
|
selected |
√ |
√ |
src |
√ |
|
tabindex |
√ |
|
title |
√ |
|
type |
√ |
|
width ( if needed over .width() ) |
√ |
|