prop()和attr()

区别 :!!
attribute表示HTML文档节点的属性,property表示JS对象的属性
prop()函数的设计目标是用于设置或获取指定DOM元素(指的是JS对象,Element类型)
上的属性(property)
attr()函数的设计目标是用于设置或获取指定DOM元素所对应的文档节点上的属性(attribute)


attr()主要依赖 getAttribute() setAttribute();
prop()主要依赖的则是JS中原生的对象属性获取和设置方式,如: msg["pid"]="pid的值"

不过DOM元素某些属性的更改也会影响到元素节点上对应的属性,例如,property的id对应attribute的id ,,property的className对应attribute的class;

// 1,attr()是jQuery 1.0 版本 就有的函数,prop() 是jQuery 1.6版本新增的函数
//2,attr() 函数操作的是文档节点的属性,因此设置的属性值只能是字符串类型,如果不是字符串类型,也会调用toString()转化为字符串类型,,prop()函数操作的是JS对象的属性,因此设置的属性值可以包括数组和对象在内的任意类型
//3,其他细节问题
//对于表单元素的 "checked" "selected" "disabled" 等属性,在jQuery 1.6之前,attr()获取这些属性的返回值为Boolean; 如果被选中(或禁用)返回true,否则false 但是从1.6开始,使用attr()获取这些属性的返回值为String,如果被选中(或者禁用)则返回“checked” “selected” “disabled”,否则返回“undefined”
//并且,在某些版本中,这些属性值表示文档加载时的初始状态值,即使之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会发生改变。因为jQuery认为 attribute的“checked” “selected” “disabled” 就是表示该属性初始状态的值,property的“checked” selected disabled才表示该属性实时状态的值(值为true或false)。。因此在jQuery1.6及以后版本中,请使用prop()函数来设置或获取 checked, selected,disbled对于其他能够用prop()实现的操作,也尽量使用prop()函数

http://www.365mini.com/page/jquery-attr-vs-prop.htm

时代在变,你真是留不住自己
原文地址:https://www.cnblogs.com/mwfsm/p/7542806.html