参考博文:jquery中attr和prop的区别
“jQuery中attr() 对应原生JS中的 setAttribute() / getAttribute ,prop() 对应原生JS中 DOM对象.property;前者设置的“属性”会在元素标签中显示,后者设置的“属性”存在于该元素对应DOM对象下。你用prop()设置的属性,能用attr()访问的到才怪。同样,用attr()设置的属性,用prop()也访问不到的。(不包括id,class等自有属性,自有属性无论是attr()还是prop()都能访问和设置)。”
“首先要区别HTML标签和DOM元素对象,页面加载后,HTML标签会对应一个DOM元素对象(在内存中)。DOM元素对象会将HTML标签的固有属性解析成DOM元素对象的属性。
attr操作的就是HTML标签的内容(在页面上通过Firebug等开发者工具可以查看到),prop操作的是DOM元素的内容(数据通过开发者工具不能可视)。
但是也不是这么绝对:正式因为前面提到的“DOM元素对象会将HTML标签的固有属性解析成DOM元素对象的属性”,prop和attr都可以操作(读取/设置)固有属性。”
实例
在设置form表单的单选框(radio)的初始值时,若使用attr则会出现checked被固定写入标签中,且无法定点清除,如果不更新整个页面而只是局部渲染数据,几次操作下来,则每一个被渲染过的radio都会保有checked;而使用prop则会根据初始数据情况动态地渲染单选框。