jQuery prop vs attr

最近因為寫了一個套件必須更改 HTML 的狀態,所以一直在跟 jQuery 的 prop() 跟 attr()`之間打轉,以往都是需要用到才去查用法,一時之間還真的不清楚的差別在哪裡。

jQuery prop vs attr

最近因為寫了一個套件必須更改 HTML 的狀態,所以一直在跟 jQuery 的 prop()attr() 之間打轉,以往都是需要用到才去查用法,一時之間還真的不清楚的差別在哪裡。

attr(attribute)
prop(property)
都代表屬性(廢話),操作的目標不同,在 jQuery 上版本分別是 1.01.6 出現的,現在的話應該也沒有人使用 1.6 以下的版本了吧。

<input type='checkbox' class='js-checkbox' checked="checked">

注意:兩者是不同步的,所以盡量不要混用,免得出現不對等的 Bug
attr 我會認為是一開始 HTML 渲染出來的狀態、prop 則是當下 DOM 的狀態

attr

HTML 上的屬性

$('.js-checkbox').attr('checked') // "checked" 

prop

DOM 上的屬性

$('.js-checkbox').prop('checked') // true"