假設我們現在需要這樣的場景:頁面上有一個checkbox,我們期望透過Jquery來獲得它是否選中,或透過Jquery來讓它被選中。
在JQ1.6之前的版本,我們會這樣寫我們的程式碼:
<script> <BR>//取得是否選取<BR>var isChecked = $('#cb').attr ('checked'); <br><br>//設定選取<BR>$('#cb').attr('checked',true); <BR></script>
這樣寫在JQ1.6之前完全沒問題,可是當我們升級JQ1.6到更高的版本時,問題就來了,此時我們會發現:
$('#cb').attr ('checked'); 回傳的是checked或是undefined,不是原來的true和false了。
而checked屬性在頁面初始化的時候已經初始化好了,不會隨著狀態的改變而改變。所以如果checkbox一開始是選中的,那麼回傳的是checked,如果一開始沒被選中,則回傳的是undefined。
解決的方法是: 複製程式碼
代碼如下
<script> <BR>//取得是否選取<BR>var isChecked = $('#cb').prop(' checked'); <BR>//或<BR>var isChecked = $('#cb').is(":checked"); <BR>//設定選取</script>
$('#cb'). prop('checked',true);
分析了其中的原因,可以這樣理解:
它將「屬性」與「特性」做了區別,屬性指的是「name,id」等等,特性指的是「selectedIndex, tagName, nodeName」等等。
JQ1.6之後,可以透過attr方法去取得屬性,透過prop方法去取得特性複製程式碼
程式碼如下:
$("#cb").attr("tagName"); //undefined $("#cb").prop("tagName"); //INPUT