抱歉标题不好。
请参阅以下小提琴:
https://jsfiddle.net/pw9e0yun/2/
$(this).data("item", "item-no-" + (index));
$(this).data("options", options); /* how to store options not as a reference */
我喜欢数据" item"存储("原样")。但我不喜欢数据"选项"被储存了。这让我很难弄清楚过去几个小时。现在我意识到该选项存储为一种引用。为什么会这样,我怎样才能轻松存储"当时"元素数据中options对象的值。
感谢您的澄清。
(顺便说一句:错误"链接到jsfiddle.net必须附带代码"是愚蠢的)
答案 0 :(得分:1)
它将它存储为引用,因为它们的对象和引用如何在JavaScript中工作。 data
写入存储区域,该存储区域基本上是您要添加属性的JavaScript对象。 (正如有些人认为的那样,它并没有写入data-*
属性。它会从它们初始化数据存储,这有时让人感到惊讶。)
如果要存储对象的副本,则必须复制它。有许多不同的方法可以在JavaScript中复制对象(包括jQuery'自己的$.extend
)。您使用哪一个完全取决于您的最终目标。
因此可能有效,具体取决于options
是什么以及您的最终目标是什么:
$(this).data("options", $.extend({}, options));
// or
$(this).data("options", $.extend(true, {}, options));