2013-03-05 90 views
-2

我有一些舊的jQuery工作代碼:jQuery是否支持attr對某些DOM屬性的支持?

if ($element.attr('checked') === 'checked') 

這是從來沒有rewriten到建議:

if ($element.prop('checked')) 

但它的工作。

但現在,我已經更新到jQuery 1.9.1和訪問與attr檢查返回未定義。這是否意味着jQuery放棄了對某些DOM屬性(如checked/disabled/selected)的支持?

+2

http://api.jquery.com/attr/「從jQuery 1.6開始,對於尚未設置的屬性,.attr()方法返回undefined。另外,.attr()不應該用於普通對象,數組,窗口或文檔。要檢索和更改DOM屬性,請使用.prop()方法。「 – jantimon 2013-03-05 14:04:18

+0

它在[1.6](http://ejohn.org/blog/jquery-16-and-attr/)中被改變了,你是從1.5跳起的嗎? – epascarello 2013-03-05 14:04:40

+1

你有沒有試過閱讀[jQuery文檔](http://api.jquery.com/attr/)? – 2013-03-05 14:04:47

回答

1

jQuery 1.6引入了用於設置或獲取節點屬性的.prop()方法,並且不推薦使用.attr()來設置屬性。但是,1.9以下的版本繼續支持在特定情況下使用.attr()。在向後兼容的名稱中的這種行爲在使用區分屬性和屬性的選擇器時會引起混淆。

查看jQuery本身的升級指南。 .attr() versus .prop()

+0

jQuery頁面上記錄的更改。謝謝,這正是我的問題的答案。 – dragonfly 2013-03-05 14:21:25

+0

謝謝隨時:) – 2013-03-05 15:53:18