【发布时间】:2015-07-09 19:13:46
【问题描述】:
我正在尝试使用jQuery.data() 并将对象保存到我的 HTML 元素中。每次我将一个列表元素添加到我的无序列表时,它只会将最后一个对象保存到特定的 li 元素中。其他所有 li-Elements 保存的数据都会被丢弃!
我已经构建了一个小示例。 JSBin-Example
在左侧,我创建了一个列表,其中保存了一个对象。在右边我试图显示与对象相关的数据。
为什么它只显示与最后一个 HTML 元素相关的对象?
工作示例:
JSBin-Example
【问题讨论】:
-
对于初学者的这段代码可以进行大规模的重构。查看 .attr() 以将 id 添加到元素,并查看 .append() 以获取元素内的数据。您的示例中的代码真的很难阅读。
-
另外,你不应该像你在这里所做的那样对数组使用
for...in循环:var item in testObject。 Use a proper for loop instead. -
为什么很难阅读?这是一个小而简单的例子。我正在使用 $("#"+id).data(testObject[item]); 添加数据每次我添加一个新项目时,列表都会更新。数据在我添加到 DOM 后被保存。我怎样才能使它更具可读性?
-
jsbin.com/ralizazahe/1 现在快速浏览一下 updateList() 函数。更容易阅读并开始工作。就 data() 函数而言,我很确定您不能将对象附加到它。您必须单独设置。虽然我可能是错的,但从来没有那样使用它。
-
jsbin.com/ralizazahe/1/edit?js,console,output 快速浏览一下,并提出任何您不理解的问题。这不是贬低您的代码,而是帮助您了解如何改进它。希望它有一点帮助。不能花太多时间在上面,但是如果您在控制台中查看,它会将正确的值传递给您保存的列表,但实际上并没有填充。
标签: javascript jquery html data-binding jquery-data