jq、js中判斷checkbox是否選中


最近在開發項目時用到checkbox復選框,其中遇到一個問題:在JQ中如何判斷checkbox是否被選中呢?之前用JQ獲取元素的屬性用的都是attr(),但用在checkbox上卻沒有用,原因何在???

1、JS中判斷checkbox是否被選中

對於在js中來判斷checkbox是否被選中很簡單,舉個🌰來說

HTML代碼:

<input type="checkbox" name="box">

相應的javascript代碼如下:

var check = document.getElementsByTagName('input')[0];
console.log(check.checked);//false        

因為HTML代碼中沒有設置checked屬性值,所以默認返回false,反之則返回true;若要在HTML中設置checkbox為選中狀態則可以這樣設置:

<input type="checkbox" name="box" checked="true">

2、JQ中判斷checkbox是否被選中

(1)、JQ1.6版本之前(不包括1.6版本)判斷checkbox是否被選中用的是attr()方法,HTML代碼與上面相同,只放JQ代碼:

console.log($("input[type='checkbox']").attr('checked'));//false

不要想着在JQ1.6版本之前使用prop()方法,只會報出$().prop()is not a function的錯誤

(2)、JQ1.6版本之后Jquery中新引入了prop()方法,此時再用attr()方法判斷checkbox的狀態則會返回undefined,若有設置checked屬性為true,則會返回checked而不是true

1.6+版本prop()方法:

console.log($("input[type='checkbox']").prop('checked'));//false

(3)、除了以上兩種方法JQ中還有一個is()方法同樣可以判斷checkbox的狀態

is()方法代碼如下:

console.log($("input[type='checkbox']").is(':checked'));//false

要特別注意不要漏巧":disabled"中的":"

3、attr()與prop()如何選擇

attr()方法用於設置或返回被選元素的屬性值

prop()方法用於獲取匹配元素集合中的第一個元素的屬性值

對於attr()方法的解釋還比較通俗易懂,prop()方法看了解釋還是一臉懵逼,什么鬼……

查找Jquery的官方文檔有一段是對Attributes和Properties的對比,翻譯過來是這么解釋的:

 

在jQuery 1.6之前,.attr()方法在檢索某些屬性時有時會考慮屬性值,這可能會導致不一致的行為。 從jQuery 1.6開始,.prop() 方法提供了明確的檢索屬性值的方法,而.attr() 方法僅提供檢索屬性。

舉例來說,應使用.prop()方法檢索並設置selectedIndextagNamenodeNamenodeTypeownerDocumentdefaultCheckeddefaultSelected。 在jQuery 1.6之前,這些屬性可以用.attr()方法檢索,但這不在attr的范圍內。

不是很清楚的可以記住舉得這幾個用紅色標出來的這幾個屬性。

PS:attributes和properties都被翻譯為“屬性”

想要了解更多關於attributes和properties的區別值得深入挖掘一番,今天暫且就到這兒,歇了。

補充:網上找到一篇解釋attributes與properties的區別的文章,通俗易懂分享給大家,點擊這里跳轉。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM