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