首先
- attr 是從頁面搜索獲得元素值,所以頁面必須明確定義元素才能獲取值,相對來說比較慢。
如:
<input name='test' type='checkbox'>
$('input:checkbox').attr('type'); 返回checkbox.
$('input:checkbox').attr('checked'); 返回undefined。
因為<input name='test' type='checkbox'>
中沒有checked關鍵字。
- prop是從屬性對象中取值,屬性對象中有多少屬性,就能獲取多少值,不需要在頁面中顯示定義。
比如$('input:checkbox').prop('checked'); 返回false
。
這里就會遇到個問題:如果是自定義的屬性,那么屬性對象中是沒有這個屬性的。所以prop返回undefined。但是頁面中可以檢索到這個屬性,所以attr是可以獲取的。
其次
- attr獲取的是初始化值,除非通過attr(‘name’,’value’)改變,否則值不變。prop屬性值是動態的,比如checkbox,選中后,checked變為true,prop值也會發生改變。
總結
所以有個經驗就是:
-
對於HTML元素本身就帶有的固有屬性,在處理時,使用prop方法。快速,准確。
-
對於HTML元素我們自己自定義的DOM屬性,在處理時,使用attr方法。