如何更新“复杂”使用jQuery's .data()存储的数据
How to update "complex" data stored with jQuery's .data()?
在我看来,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,你可以在这里和这里检查演示(输出记录在控制台)。
相关文章:
- jQuery.data()并存储日期信息
- AJAX URL 追加与存储的 jQuery .data() 冲突
- 使用javascript中.data()中存储的数据获取变量
- jQuery data():can't使用jQuery选择器获取存储的数据
- jquery.data 在存储元素时是否跳过事件处理程序
- Jquery data() 存储多个值
- .data()在哪里存储值
- 我的数据库通过Phonegap存储在Android中的/data/data/package-name/app_datab
- 在HTML文档中存储对象ID: ID vs data-id vs
- 如何从angular-spring-data-rest存储库构建未压缩(未编译)的angular-spring-data
- 分配存储在jQuery.data()中的对象的单个键
- 使用.replace()在HTML5数据属性上存储jQuery $.data()检索到的数字时未捕获的TypeError
- 将html代码存储在data属性中
- 为什么使用.data()而不是使用普通变量来存储数据?
- 在jQuery中,我可以使用.data()将元素存储到另一个元素上以便快速检索吗?
- 如何更新“复杂”使用jQuery's .data()存储的数据
- Ember-Data和将数据拉入存储
- jQuery .data方法-基于存储数据动态添加或删除元素
- 覆盖Ext.data.存储,调用构造函数
- 为什么要使用data()将函数存储在元素上