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

时间:2011-08-16 11:38:03

标签: javascript jquery

在我看来,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});

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

我应该怎么做?

2 个答案:

答案 0 :(得分:4)

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

$elem.data('list').prev = $newPrev;

谢谢@balpha

答案 1 :(得分:1)

像这样:

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

// method two
$elem.data("list").next = "bar";

如果您有FireBug,可以查看演示herehere(输出在控制台中记录)。