如何更新“复杂”使用jQuery's .data()存储的数据

How to update "complex" data stored with jQuery's .data()?

本文关键字:data 存储 数据 使用 更新 何更新 复杂 jQuery      更新时间:2023-09-26

在我看来,jQuery的.data()函数更像是一次写入存储,而不是真正的读写存储。

似乎没有一种舒适的方法来更新复杂的值。

让我们假设有人想在双链表中使用一些元素(不是我的用例,只是为了说明目的)。

如果我这样做就很容易了:

$elem.data('prev', $prev);
$elem.data('next', $next);

但是我觉得污染元素的"全局".data()命名空间是不好的做法。

所以我宁愿这样做:

$elem.data('list', {prev: $prev, next: $next});

但是我现在如何更新prev ?

在第一个例子中,我只需要做:

$elem.data('prev', $newPrev);

但是在我看来"更好"的做事方式中,我唯一能想到的是这样的事情:

$elem.data('list', {prev: $newPrev, next: $elem.data('list').next});

这对我来说似乎要麻烦得多,我怀疑有更好的方法,但到目前为止我找不到任何东西。

我该怎么做呢?

当您使用一个参数调用jQuery的data方法时,您将获得对存储对象的引用,您可以使用常规.符号直接更新该对象:

$elem.data('list').prev = $newPrev;
由于@balpha

像这样:

// method one
var elemData = $elem.data("list");
elemData.prev = "foo";
// method two
$elem.data("list").next = "bar";

如果你有FireBug,你可以在这里和这里检查演示(输出记录在控制台)。