jquery判斷復(fù)選框選中狀態(tài)以及區(qū)分attr和prop
最近項目中需要用jquery判斷input里checkbox是否被選中,發(fā)現(xiàn)用attr()獲取不到復(fù)選框改變后的狀態(tài),最后查資料發(fā)現(xiàn)jQuery 1.6以后新增加了prop()方法,借用官方的一段描述就是:
The difference between attributes and properties can be important in specific situations. Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior. As of jQuery 1.6, the .prop() method provides a way to explicitly retrieve property values, while .attr() retrieves attributes.
上面翻譯過來大概就是:prop()處理來自節(jié)點(diǎn)對象自帶的屬性,它包含了很多原生的property;而attr()來自對象的attributes,可能是我們在元素節(jié)點(diǎn)上添加屬性節(jié)點(diǎn)才會有的。當(dāng)然,前面的翻譯僅代表本人觀點(diǎn),如有錯誤,可以提出來~~
簡單的來說就是:
對于HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。
對于HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。
上面的描述也許有點(diǎn)模糊,引用一些大神的博客內(nèi)容加上我的測試,舉幾個例子就知道了。
第一個例子:元素的固有屬性以及自定義屬性說明
<a href=" 這個例子里<a>元素的DOM屬性有“href、target和class",這些屬性就是<a>元素本身就帶有的屬性,也是W3C標(biāo)準(zhǔn)里就包含有這幾個屬性,或者說在IDE里能夠智能提示出的屬性,這些就叫做固有屬性。處理這些屬性時,建議使用prop方法。
<a href="#" id="link1" action="delete">刪除</a>
這個例子里<a>元素的DOM屬性有“href、id和action”,很明顯,前兩個是固有屬性,而后面一個“action”屬性是我們自己自定義上去的,<a>元素本身是沒有這個屬性的。這種就是自定義的DOM屬性。處理這些屬性時,建議使用attr方法。使用prop方法取值和設(shè)置屬性值時,都會返回undefined值。
第二個例子:prop()與attr()在表單應(yīng)用上的區(qū)別
先來看一段用attr()方法代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> attr() vs prop()</title> </head> <body> <h3>用attr()判斷是否選中</h3> <input type="checkbox" id="input01" />我是第一個復(fù)選框A<br /> <input type="checkbox" id="input02" checked="checked"/>我是第二個復(fù)選框B<br /> <input type="button" id="button01" value="獲取A的checked狀態(tài)" /> <input type="button" id="button02" value="獲取B的checked狀態(tài)" /> <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $(function(){ $("#button01").click(function(){ var $state01=$("#input01").attr("checked"); alert($state01); }) $("#button02").click(function(){ var $state02=$("#input02").attr("checked"); alert($state02); }) }) </script> </body> </html>
上面這段程序的測試結(jié)果是:
從動態(tài)圖可以看出來,用attr()獲取不到用戶選中的狀態(tài),它只返回表單的初始值。
再來看一段用prop()方法代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> attr() vs prop()</title> </head> <body> <h3>用prop()判斷是否選中</h3> <input type="checkbox" id="input01" />我是第一個復(fù)選框A<br /> <input type="checkbox" id="input02" checked="checked"/>我是第二個復(fù)選框B<br /> <input type="button" id="button01" value="獲取A的checked狀態(tài)" /> <input type="button" id="button02" value="獲取B的checked狀態(tài)" /> <script src="js/jquery-1.11.0.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> $(function(){ $("#button01").click(function(){ var $state01=$("#input01").prop("checked"); alert($state01); }) $("#button02").click(function(){ var $state02=$("#input02").prop("checked"); alert($state02); }) }) </script> </body> </html>
上面這段程序的測試結(jié)果是:
從動態(tài)圖可以看出來,用prop()可以實時獲取用戶的選中與取消操作狀態(tài)。
因此我總結(jié)的差別就是:property記錄的值會按照用戶操作實時更新,而attribute記錄的都是初始值,僅代表本人觀點(diǎn)。
希望本文所述對大家學(xué)習(xí)javascript程序設(shè)計有所幫助。
- Jquery中attr與prop的區(qū)別詳解
- jQuery獲取attr()與prop()屬性值的方法及區(qū)別介紹
- jQuery中attr()與prop()函數(shù)用法實例詳解(附用法區(qū)別)
- jQuery中 prop() attr()使用詳解
- jquery中attr和prop的區(qū)別分析
- jQuery中attr()和prop()在修改checked屬性時的區(qū)別
- jQuery學(xué)習(xí)之prop和attr的區(qū)別示例介紹
- jquery中prop()方法和attr()方法的區(qū)別淺析
- jquery獲取自定義屬性(attr和prop)實例介紹
- jquery 獲取自定義屬性(attr和prop)的實現(xiàn)代碼
- 關(guān)于jquery中attr()和prop()方法的區(qū)別
相關(guān)文章
基于jquery實現(xiàn)頁面滾動時頂部導(dǎo)航顯示隱藏
這篇文章主要介紹了基于jquery實現(xiàn)頁面滾動時頂部導(dǎo)航顯示隱藏效果,當(dāng)頁面向下滾動的時候,導(dǎo)航菜單動態(tài)隱藏,頁面滾動到頂部時,導(dǎo)航菜單動態(tài)顯示,淘寶也采用過此效果,感興趣的小伙伴們可以參考一下2015-11-11jquery插件NProgress.js制作網(wǎng)頁加載進(jìn)度條
這篇文章主要介紹了jquery插件NProgress.js制作網(wǎng)頁加載進(jìn)度條的相關(guān)資料,需要的朋友可以參考下2015-06-06jQuery根據(jù)name屬性進(jìn)行查找的用法分析
這篇文章主要介紹了jQuery根據(jù)name屬性進(jìn)行查找的用法,結(jié)合實例形式分析了jQuery各種常見name屬性獲取元素的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2016-06-06淺談EasyUi ComBotree樹修改 父節(jié)點(diǎn)選擇的問題
下面小編就為大家?guī)硪黄獪\談EasyUi ComBotree樹修改 父節(jié)點(diǎn)選擇的問題。2016-11-11jquery插件如何使用 jQuery操作Cookie插件使用介紹
本文將介紹jQuery如何操作Cookie插件,需要了解的朋友可以參考下2012-12-12