版权声明:本文为博主原创文章,未经博主允许不得转载。
在高版本的jQuery引入prop方法后,什么时候该用prop?什么时候该用attr?它们之间有什么区别?这些问题就出现了。
关于它们的区别,我有一些自己的看法:
- 对于HTML元素本身就带有的固有属性,在处理时建议使用prop方法
- 对于HTML元素我们自定义的DOM属性,在处理时建议使用attr方法
上面的描述也许有点模糊,举几个例子就知道了。
- 1
这个例子里<a>元素的DOM属性有id、href、target,这些属性是<a>元素本身就有的属性,W3C标准里就包含这几个属性,或者说在IDE里能够智能提示出的属性,这些就叫做固有属性。处理这些属性时,建议使用prop。
- 1
这个例子里<a>元素的DOM属性有id、href、target、uuu,前三个是固有属性,最后一个“uuu”属性使我们自定义的,<a>元素本身是没有这个属性的,这种就是自定义的DOM属性。处理这些属性时,建议使用attr。
读取HTML元素固有属性(已赋值)
- 1
- 2
- 3
- 4
- 5
- 6
读取HTML元素固有属性(未赋值)
不同HTML标签的固有属性不完全相同,例如:checked属性是checkbox标签的固有属性,但不是a标签的固有属性。class属性虽然是a标签的固有属性,但是如果元素中没有对该属性赋值,用attr()也是读取不到的。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
读取HTML元素自定义属性(已赋值)
- 1
- 2
- 3
读取HTML元素自定义属性(未赋值)
- 1
- 2
- 3
设置HTML元素固有属性
- 1
- 2
- 3
设置HTML元素自定义属性
- 1
- 2
- 3
- 4
- 5
总结
prop读取属性值:读取已赋值的固有属性会得到属性值,读取未赋值的固有属性会得到属性默认值,读取自定义属性时无论是否赋值均得到undefine。
prop设置属性值:prop只能设置固有属性值。
attr读取属性值:无论是固有属性还是自定义属性,attr只能读取元素中已有的属性值,读取元素中没有的属性值会返回undefine。
attr设置属性值:attr可以对任意属性设置属性值。