property、attribute区别
简单总结下;
- property是指DOM对象中默认的基本属性,它们会在初始化的时候在DOM对象上创建,比如id;标签自定义的属性不会出现在property中。
- attribute是HTML标签上的特性,是指标签定义的属性,包括自定义的属性(data-*);它的值只能够是字符串;
.attr()
- 本质调用的是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]"
.prop()
- 本质是直接对DOM对象上的property进行操作
- 不能操作自定义属性(data-*)
- 性能上 .prop()>.data()>.attr(),不同版本的.data()和.attr()的性能关系有差异,不过.prop()总是最优的
.data()
- 本质其实是将一个 “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’)。
参考地址:
https://www.cnblogs.com/elcar…
https://blog.csdn.net/zhangxi…
https://www.cnblogs.com/yaome…
https://segmentfault.com/a/11…