将jQuery's .data()方法应用于所选元素组的效果是什么?
What is the effect of applying jQuery's .data() method to group of selected elements?
当我对一组选定的元素应用https://api.jquery.com/data/时会发生什么?它是否在内部循环遍历匹配的集合,并在每个元素上存储数据的单独"副本"?或者是否有人存储了一个应用于匹配set对象的副本?我下面的小测试用例似乎暗示这两种情况都在发生。考虑到我期望的结果是将相同的数据应用于每个元素,从速度/内存/语义等角度来看,我的第一或第二种设置数据的方法是首选的吗?
http://jsfiddle.net/toyh8fty/1/<p id="id1">1</p>
<p id="id2">2</p>
<p id="id3">3</p>
var v = {
a: 1,
b: 2,
c: 3
};
var p = $('p');
console.log(p);
p.data(v).each(function () {
var $t = $(this);
console.log(this, $t, $t.data());
});
console.log($('#id1').data());
console.log('p.data', p.data());
p.each(function () {
var $t = $(this);
$t.data(v);
console.log(this, $t, $t.data());
});
console.log($('#id1').data());
console.log('p.data', p.data());
数据被附加到每个元素。在内存中,有数据的副本。您可以通过以下命令查看副本:
console.log($.cache)
我添加了一些输出,并在这个修改的fiddle中更改了一个值(这引起了它自己的问题),但是您应该能够看到数据独立存储在每个匹配的元素上。p.data()
只是给你一个总结。
有关.data
如何存储数据的更多信息,请参阅此答案,该答案还指出了源可用的事实。
相关文章:
- 列出没有 mysql 的元素的最佳方法是什么
- 使用Javascript,获取元素的方法是什么,基于打开和关闭标记之间的文本
- MDN文档中关于弄清楚XUL元素的段落是什么意思:“如何将覆盖扩展转换为无重启”
- 用于指定元素 ID 的正确 JavaScript 语法是什么
- 让 jquery 为 ajax 添加的元素工作的最佳方法是什么?
- 创建具有关联 dom 元素的 javascript 对象的首选方法是什么
- 将元素转换为可丢弃区域的要求是什么
- 将ng模型转发到指令中的元素的正确方法是什么
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 从服务器和/或客户端加载动态元素的典型技术是什么
- 有没有更简单的方法来检查某个父元素的 N 个子元素是什么
- 调用原型函数的元素是什么
- 当我用document.createElement()创建一个元素时,父元素是什么
- Javascript中的当前元素是什么
- 在Javascript中获取元素——但是文档中的元素#是什么?
- mymsn页面上的html容器或元素是什么?
- 有没有办法弄清楚另一个元素中最宽的元素是什么
- 查找相同类型的前一个元素,不管父元素是什么
- 这些JS元素是什么?