7

谁能告诉我 jquerydata()将数据存储在哪里以及何时删除以及如何删除?

如果我使用它来存储 ajax 调用结果,是否存在任何性能问题?

例如:

$("body").data("test", { myData: 'abcd'});
4

2 回答 2

28

所有数据都存储在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")

上述废话的一个图解示例:)

于 2010-12-08T07:12:23.277 回答
3

从 jquery 中查看内容

jQuery.data() 方法允许我们将任何类型的数据附加到 DOM 元素上,这种方式对循环引用是安全的,因此不会出现内存泄漏。jQuery 确保在通过 jQuery 方法删除 DOM 元素以及用户离开页面时删除数据。我们可以为单个元素设置几个不同的值并稍后检索它们:

于 2010-12-08T06:37:20.463 回答