jQuery .data() append
jQuery .data() append
这就是我的场景:我有一些问题是用户回答的,我想把它们存储起来,这样在问卷的末尾我就可以呈现每个问题和答案的列表。很明显,我可以选择一个全局变量,但问题是网站上还有其他问卷。我的解决方案是使用jQuery的.data()
。我的问题是,当我尝试添加类似的数据时,它会覆盖以前的数据。这里有一个简单的例子:
<div id="test"></div>
$("#test").data({name:"foo",answer:"bar"});
$("#test").data({name:"john",answer:"doe"});
console.log($("#test").data()); //logs name:"john",answer:"doe"
我怎样才能让它保持这两个值?
您正在重写以前的数据,请在数组中的单个调用中添加这两条记录。
实时演示
$("#test").data([{name:"foo",answer:"bar"}, {name:"john",answer:"doe"}]);
访问数组、等数据
alert($("#test").data()[0].name);
alert($("#test").data()[1].name);
根据注释编辑,如果要将记录一个接一个地添加到数据中,可以使用键值对。
实时演示
$("#test").data("1", {name:"foo",answer:"bar"});
$("#test").data("2", {name:"john",answer:"doe"});
正如@Heart所指出的,如果这些数据很重要,那么客户端上的存储对客户端是开放的,可以修改。使用ssl并在从用户那里获得它时将其发布,可以避免数据安全性被破坏。
为什么不尝试用key
添加它们?
$("#test").data("Answer1", {
name: "foo",
answer: "bar"
});
$("#test").data("Answer2", {
name: "john",
answer: "doe"
});
console.log($("#test").data());
/*
//Console Output
[object Object] {
Answer1: [object Object] {
answer: "bar",
name: "foo"
},
Answer2: [object Object] {
answer: "doe",
name: "john"
}
}
*/
这样你的物品就独一无二了。
演示:http://jsbin.com/ixuqal/1/edit
我认为这是添加新数据的最简单的解决方案:
- 首先从元素中获取数据
- 将其存储在变量中
- 附加您的新数据
- 然后将数据重新添加到元素
var myData = [];
//get your existing data
myData.push($("#testID").data());
//append your new data
myData.push({fname:"john",lname:"doe"});
//update element
$("#testID").data(myData);
相关文章:
- Ember Data DS.Model's set函数不起作用
- Extending Ext.data.NodeInterface
- 如何获取$data.Entity的密钥
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- Javascript - element.childNodes does not see an append.newch
- append元素don'不要在提交时出现
- Jquery append oly获取循环Rails中的最后一个elemen
- jQuery可以't获取data-*属性值,返回undefined
- Query JS Ext.data.Store
- 如何在yii中使用append
- 文本编辑后,append函数不适用于文本区域
- MutationObserver observe jquery append?
- 使用append时复制内容的DOM
- Append元素在运行两次函数后不显示
- datatable append html,但已刷新
- 设置'这'在React with Inverse Data Flow中
- jQuery .data() append
- 如何在React中实现D3.selectAll.data.enter.append.transition.style
- 不能使用jquery .append(data)作为.val(append(data))
- jQuery append() and data()