成人精品一区二区三区中文字幕-成人精品一区二区三区-成人精品一级毛片-成人精品亚洲-日本在线视频一区二区-日本在线视频免费

導航首頁 ? 技術教程 ? jquery判斷復選框選中狀態(tài)以及區(qū)分attr和prop
全站頭部文字 我要出現(xiàn)在這里
jquery判斷復選框選中狀態(tài)以及區(qū)分attr和prop 668 2024-03-16   

最近項目中需要用jquery判斷input里checkbox是否被選中,發(fā)現(xiàn)用attr()獲取不到復選框改變后的狀態(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é)點對象自帶的屬性,它包含了很多原生的property;而attr()來自對象的attributes,可能是我們在元素節(jié)點上添加屬性節(jié)點才會有的。當然,前面的翻譯僅代表本人觀點,如有錯誤,可以提出來~~

簡單的來說就是:

對于HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。
對于HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。
上面的描述也許有點模糊,引用一些大神的博客內容加上我的測試,舉幾個例子就知道了。

第一個例子:元素的固有屬性以及自定義屬性說明

<a target="_self" class="btn">百度</a>
這個例子里<a>元素的DOM屬性有“href、target和class",這些屬性就是<a>元素本身就帶有的屬性,也是W3C標準里就包含有這幾個屬性,或者說在IDE里能夠智能提示出的屬性,這些就叫做固有屬性。處理這些屬性時,建議使用prop方法。

<a id="link1" action="delete">刪除</a>
這個例子里<a>元素的DOM屬性有“href、id和action”,很明顯,前兩個是固有屬性,而后面一個“action”屬性是我們自己自定義上去的,<a>元素本身是沒有這個屬性的。這種就是自定義的DOM屬性。處理這些屬性時,建議使用attr方法。使用prop方法取值和設置屬性值時,都會返回undefined值。

第二個例子:prop()與attr()在表單應用上的區(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" />我是第一個復選框A<br />
  <input type="checkbox" id="input02" checked="checked"/>我是第二個復選框B<br />
  <input type="button" id="button01" value="獲取A的checked狀態(tài)" />
  <input type="button" id="button02" value="獲取B的checked狀態(tài)" />
  <script src="http://www.gimoo.net/t/1904/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>

上面這段程序的測試結果是:

查看圖片

從動態(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" />我是第一個復選框A<br />
  <input type="checkbox" id="input02" checked="checked"/>我是第二個復選框B<br />
  <input type="button" id="button01" value="獲取A的checked狀態(tài)" />
  <input type="button" id="button02" value="獲取B的checked狀態(tài)" />
  <script src="http://www.gimoo.net/t/1904/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>

上面這段程序的測試結果是:

查看圖片

從動態(tài)圖可以看出來,用prop()可以實時獲取用戶的選中與取消操作狀態(tài)。

因此我總結的差別就是:property記錄的值會按照用戶操作實時更新,而attribute記錄的都是初始值,僅代表本人觀點。

希望本文所述對大家學習javascript程序設計有所幫助。



主站蜘蛛池模板: 夏娃诱惑| creepshow| 汤唯韩国电影| 妈妈的花样年华演员表全部| 海洋之歌免费观看完整中文版| 六年级上册脱式计算题| 影片《边境》| 吴谨言星座| rima horton| 石田介雄| 夫妻最现实的约法三章| 金瓶儿| 爱情插班生| 邻家花美男 电视剧| 哈利学前班| 夫妻情感生活| 视频三级| 花煞| ctv5| 花飞满城春 电影| 漫画头像女生可爱| 腰带之下| 脓毒血症护理查房ppt| 狗年电影| 性监狱电影| 隐形人4| 绷带怪人| 《生命中有你》赞美诗歌| 凌晨晚餐| 欧美日韩欧美| 长恨歌电影| 是王者啊第二季免费观看完整版| 拿什么拯救你我的爱人演员表介绍| 最后的武士| outlander| 幼儿歌曲颠倒歌| kaori主演电影在线观看| 奇爱博士| 情侣签名一男一女简短| 王后秘史| 梁修身|

!!!站長長期在線接!!!

網(wǎng)站、小程序:定制開發(fā)/二次開發(fā)/仿制開發(fā)等

各種疑難雜癥解決/定制接口/定制采集等

站長微信:lxwl520520

站長QQ:1737366103