prop()方法和attr()方法的區別
這兩個方法作用好像是一模一樣,其實絕大多數作用都是一樣,只有在一些特殊的情況下才有可能出現一些差異,下面就結合例項例項介紹一下在這兩個方法的區別。
先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>prop()函式和attr()函式的區別-螞蟻部落</title> <style type="text/css"> li{ list-style-type:none; font-size:12px; color:blue; width:300px; height:20px; line-height:20px; } a{ width:200px; height:20px; float:left; } .ck{ float:left; width:26px; } .time{ color:red; width:60px; height:20px; float:right; } .do{ font-size:12px; } </style> <script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("#myck").bind("click",function(){ $('input[type=checkbox]').prop('checked',$(this).prop('checked')); if($(".do").text()=="全選"){ $(".do").text("取消"); } else{ $(".do").text("全選"); } }) }) </script> </head> <body> <div> <ul> <li> <span class="ck"><input type="checkbox"/></span> <a href="#">螞蟻部落歡迎您</a> <span class="time">12-13</span> </li> <li> <span class="ck"><input type="checkbox"/></span> <a href="#">大家好,好久不見了</a> <span class="time">12-13</span> </li> <li> <span class="ck"><input type="checkbox"/></span> <a href="#">螞蟻部落</a> <span class="time">12-13</span> </li> </ul> <div><input type="checkbox" id="myck"/><span class="do">全選</span></div> </div> </body> </html>
以上程式碼是非常常見的核取方塊的全選和全不選功能,在上面的程式碼中使用了prop()來獲取或設定核取方塊的checked屬性值。
但是如果將以下程式碼:
[JavaScript] 純文字檢視 複製程式碼$('input[type=checkbox]').prop('checked',$(this).prop('checked'))
修改為:
[JavaScript] 純文字檢視 複製程式碼$('input[type=checkbox]').prop('checked',$(this).attr('checked'))
這樣就不能實現我們想要的功能。下面簡單分析一下原因:
當使用attr()方法去獲取核取方塊的checked屬性值的時候,如果核取方塊被選中,那麼獲取的屬性值為checked,如果沒有選中獲取的屬性值就是undefined,自然也就無法實現我們想要的功能。prop()方法能夠很好的彌補attr()方法的不足,此方法統一返回true或false。
兩種方法的選擇:
有的瀏覽器只要寫disabled,checked就可以了,而有的要寫成disabled="disabled",checked="checked",比如用attr("checked")獲取checkbox的checked屬性時選中的時候可以取到值,值為"checked"但沒選中獲取值就是undefined。
兩種方法的選擇原則如下:
1.新增屬性名稱該屬性就會生效應該使用prop();
2.是有true,false兩個屬性使用prop();
3.其他則使用attr();
其實大可不必苛責,為了避免這些麻煩直接只是用prop()就好了。
相關文章
- jquery prop和attr的區別jQuery
- jquery中prop和attr的區別jQuery
- Jquery中attr和prop的區別jQuery
- prop()與attr()區別
- jQuery的prop和attr方法比較jQuery
- jQuery實戰之 attr() 和 prop() 的區別jQuery
- prop()函式和attr()函式的區別函式
- jquery中dom元素的attr和prop方法的理解jQuery
- jQuery中css()和attr()方法的區別jQueryCSS
- jquery中attr和prop的區別+jquery實現全選全不選jQuery
- Checkbox點選多次失效原因,源於Jquery中.attr和.prop的區別jQuery
- jQuery的attr與propjQuery
- 淺談jquery中prop()和attr()jQuery
- attr()和prop()處理checkbox核取方塊選中和不選中的區別
- jq 物件的 attr 和 data 方法物件
- Jquery中.attr()和.data()的區別jQuery
- getAttribute()和attr()一點區別
- ==和equals方法的區別
- Difference between prop and attr in different version of jqueryjQuery
- Android中 @和?區別以及?attr/**與@style/**等的區別Android
- laravel中delete()方法和destroy()方法的區別Laraveldelete
- getAttribute() 與 attr() 的區別
- sendRedirect()和forward()方法的區別Forward
- ## 運算子和方法的區別
- CSS3屬性選擇器之:教你區分E[attr*=val]和E[attr~=val]的使用方法!!CSSS3
- Python 靜態方法和類方法的區別Python
- 方法重置和重寫的區別
- Java中 equals() 方法和 == 的區別Java
- StringBuffer類的delete()方法和deleteCharAt()方法的區別delete
- JavaScript方法和函式區別JavaScript函式
- activity和fragment中startactivityforresult方法的區別Fragment
- ROR中h()方法和sanitize的區別
- ExecutorService shutdown()和shutdownNow()方法區別
- Python中函式和方法的區別Python函式
- 介面和列舉在方法中的區別
- FTP 中ascii 和bin 的區別和使用方法FTPASCII
- 靜態方法和例項方法的區別以及如何恰當使用
- Python生成器next方法和send方法區別Python