最近在做项目的时候,发现到了prop这个属性,然后之前一直使用的是attr属性,觉得感觉上都差不多,jQuery也不可能专门做了两个相同的属性撒。所以就结合这两个属性研究了一下,也谈谈我对他们最简单最直观的理解。
----------------对于HTML元素本身就带有的固有属性,在处理时,使用prop方法。
----------------对于HTML元素我们自己自定义的DOM属性,在处理时,使用attr方法。
打个比方,这是我之前的:
<a class="delete" title="你确定要删除此条信息吗?" aaa="delete"><span>删除</span></a>
$(".delete").attr("href", URL);
之前在项目中我喜欢在script里直接将a标签的href单独提出来,然后使用attr。但是标准写法应该是用prop。
在a标签里,class和title是能够直接被浏览器识别的、W3C中存在的、a标签自带的,称为固有属性。建议使用prop。而aaa是开发者自己写的,不会被浏览器直接识别的,建议用attr,使用prop方法取值和设置属性值时,就会返回undefined值。
具有 true 和 false 两个属性的属性,如 checked, selected 或者 disabled 使用prop()。
相比attr,prop是1.6才新出来的。只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes。prop应运而生了。
总的来说,就是jQuery版本差异!