attr()與prop()之全選、反選問題

獲取js dom原生屬性的時候最好用prop()方法,獲取本身添加的屬性時用attr()html

原文:http://blog.sina.com.cn/s/blog_bf5ce8cc0102vuyt.htmljquery

判斷是否選中瀏覽器

代碼以下:dom

$('#checkbox').prop('checked')url

設置選中與不選中狀態:spa

代碼以下:htm

$('#checkbox').attr('checked',true)$('#checkbox').attr('checked',false)blog

但此方法在jquery1.9.1中,有些處理不同get

IE10,Chrome,FF中,對於選中狀態,第一次$('#checkbox').attr('checked',true)能夠實現可是當經過代碼清除選中,下次再經過代碼 $('#checkbox').attr('checked',true) 去選中時雖然代碼中有checked='checked',可是畫面表現都沒有打勾。IE8,IE6下無此問題。it

後來查詢了相關的資料,發現如今attr('checked',true)都換成prop('checked',true);

 

 

jquery1.6中新加了一個方法prop(),一直沒用過它,官方解釋只有一句話:獲取在匹配的元素集中的第一個元素的屬性值。

你們都知道有的瀏覽器只要寫disabled,checked就能夠了,而有的要寫成disabled = "disabled",checked="checked",好比用attr("checked")獲取checkbox的checked屬性時選中的時候能夠取到值,值爲"checked"但沒選中獲取值就是undefined。

jq提供新的方法「prop」來獲取這些屬性,就是來解決這個問題的,之前咱們使用attr獲取checked屬性時返回"checked"和"",如今使用prop方法獲取屬性則統一返回true和false。

那麼,何時使用attr(),何時使用prop()?1.添加屬性名稱該屬性就會生效應該使用prop();2.是有true,false兩個屬性使用prop();3.其餘則使用attr();項目中jquery升級的時候你們要注意這點!

如下是官方建議attr(),prop()的使用:

相關文章
相關標籤/搜索