首頁 >web前端 >js教程 >Jquery attr('checked') 傳回checked或undefined 取得選取失效_jquery

Jquery attr('checked') 傳回checked或undefined 取得選取失效_jquery

WBOY
WBOY原創
2016-05-16 17:20:30953瀏覽

假設我們現在需要這樣的場景:頁面上有一個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
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn