jQuery中prop()方法和attr()方法的区别
从jQuery 1.6开始,新加入了一个prop方法。这个方法和attr方法功能非常的相近。
以下是官网建议的使用情况:
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()
)
√
个人简要总结了一下:
1、赋值时候,如果是这样的只有属性名就能生效的属性
推荐prop,即:$(‘input’).prop(‘checked’,true);
同时,false表示取消,即:$(‘input’).prop(‘checked’,false);
当然attr也行的:$(‘input’).attr(‘checked’,’这里写什么都行的’);
取消属性就是移除:$(‘input’).removeAttr(‘checked’);
2、取值的时候,如果是
推荐使用prop,即:
$(‘#input1’).prop(‘checked’); //返回true
$(‘#input2’).prop(‘checked’); //返回false
而使用attr,则:
$(‘#input1’).attr(‘checked’); //返回checked
$(‘#input2’).attr(‘checked’); //返回undefined
3、特殊属性赋值取值
这个特殊说明下,获取很多人都用不到呢。
比如需要在input中追加一个data-tips属性。变成这样子
这时候只能写:$(‘input’).attr(‘data-tips’,’aa’);
使用prop是不管用的。
但是读值时候,两个都可以的:
$(‘input’).attr(‘data-tips’);//返回aa
$(‘input’).prop(‘data-tips’);//返回aa