简单总结下;
property是指DOM对象中默认的基本属性,它们会在初始化的时候在DOM对象上创建,比如id;标签自定义的属性不会出现在property中。
attribute是HTML标签上的特性,是指标签定义的属性,包括自定义的属性(data-*);它的值只能够是字符串;
本质调用的是getAttribute和setAttribute方法,操作DOM对象上的attributes
对传入的attrName大小写不敏感,attr(‘name’)和attr(‘NAME’)返回值是一样的。
如果传入的值是null、undefined,会调用toString,那么返回的是"null"、"undefined"。如果value是一个对象,返回值是"[object, object]";
var $e = $('#a');
a.attr('attr1', {name: 'name1'});
a.attr('attr1'); // "[object object]"
本质是直接对DOM对象上的property进行操作
不能操作自定义属性(data-*)
性能上 .prop()>.data()>.attr(),不同版本的.data()和.attr()的性能关系有差异,不过.prop()总是最优的
本质其实是将一个 “cache” 附加到了对象上,并使用了一个特殊的属性名称。
第一次调用data()时会把HTML里静态绑定的数据(data-*),复制到jQuery.cache变量里
data()的值修改并不会影响到DOM元素上data-*属性的改变,data()的
通过data()来获取数据时,key必须全小写,比如绑定data-AGE=”23”,只能通过data(‘age’)而不是data(‘AGE’)。另外注意data-last-value=”100”,只能通过data(‘lastValue’)或者data(‘last-value’)。
35 天前