谁能告诉我 jquerydata()
将数据存储在哪里以及何时删除以及如何删除?
如果我使用它来存储 ajax 调用结果,是否存在任何性能问题?
例如:
$("body").data("test", { myData: 'abcd'});
谁能告诉我 jquerydata()
将数据存储在哪里以及何时删除以及如何删除?
如果我使用它来存储 ajax 调用结果,是否存在任何性能问题?
例如:
$("body").data("test", { myData: 'abcd'});
所有数据都存储在jQuery
名为 的对象的属性中cache
。在控制台中记录 的内容$.cache
以查看与任何 DOM 元素关联的所有数据和事件。
jQuery 将 DOM 对象与此缓存中的对象链接起来的方式是通过操作 DOM 对象。假设我们有一个输入元素
<input type="text" value="hello" />
它有一个名为“foo”的数据键
$(e).data("foo", "bar");
现在 jQuery 维护了一个形式为 的随机字符串jQuery<current time in ms>
,例如 ,jQuery1291790929680
它也可以通过$.expando
. jQuery 将此 expando 字符串作为键添加到每个具有关联数据项或事件的 DOM 对象。因此,上述输入元素的 DOM 对象将包含这个带有一些整数值的 expando 键,例如:
jQuery1291790929680: 4
4 只是一个随机示例,但这个数字表示对象中的一个索引$.cache
,其中存储了该 DOM 对象的关联数据和事件。因此,给定这些信息,要检索上述输入元素的数据,我们可以间接编写:
$.cache[4]["foo"]
它应该返回“bar”,这是一种间接的写法$(e).data("foo")
。
上述废话的一个图解示例:)
从 jquery 中查看内容
jQuery.data() 方法允许我们将任何类型的数据附加到 DOM 元素上,这种方式对循环引用是安全的,因此不会出现内存泄漏。jQuery 确保在通过 jQuery 方法删除 DOM 元素以及用户离开页面时删除数据。我们可以为单个元素设置几个不同的值并稍后检索它们: