以前的jq中,全部使用attr来访问对象的属性,比如取一个图片的alt属性,就可以这样做$('#img').attr('alt');
但是在某些时候,比如访问checkbox的disabled属性的时候,会有些问题。在有些浏览器里,只要写了disabled就可以,有些则要写:disabled = "disabled"。所以,从1.6开始,jq提供新的方法“prop”来获取这些属性。
使用prop的时候,返回值是标准属性,true/false,比如$('#checkbox').prop('disabled'),不会返回“disabled”或者“”,只会是true/false。当然赋值的时候也是如此。如此,我们便统一了所有操作,无论是从语法上还是语义上。
那么,哪些属性应该用attr访问,哪些应该用prop访问呢?一个原则是,只添加属性名不添加属性值就会生效;第二个原则是,只存在true/false的属性,按照官方文档,如下:
Attribute/Property | .attr() | .prop() |
---|---|---|
accesskey | ✓ | |
align | ✓ | |
async | ✓ | ✓ |
autofocus | ✓ | ✓ |
checked | ✓ | ✓ |
class | ✓ | |
contenteditable | ✓ | |
draggable | ✓ | |
href | ✓ | |
id | ✓ | |
label | ✓ | |
location ( i.e. window.location ) | ✓ | ✓ |
multiple | ✓ | ✓ |
readOnly | ✓ | ✓ |
rel | ✓ | |
selected | ✓ | ✓ |
src | ✓ | |
tabindex | ✓ | |
title | ✓ | |
type | ✓ | |
width ( if needed over .width() ) |
✓ |
前端的同学或者做前端开发的同学都注意下吧,尤其是准备把项目迁移到jq1.6的.