所以这是我的情景:我有几个问题,用户回答,我想存储它们,所以在调查问卷的最后,我可以呈现每个问题和答案的列表。显然我可以使用全局变量,但问题是网站上还有其他问卷。我的解决方案是使用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"
如何保持两个值?
答案 0 :(得分:2)
您正在编写以前的数据,在数组中单个调用中添加两个记录。
<强> Live Demo 强>
$("#test").data([{name:"foo",answer:"bar"}, {name:"john",answer:"doe"}]);
访问数组,
等数据alert($("#test").data()[0].name);
alert($("#test").data()[1].name);
根据评论编辑,如果您想依次向数据添加记录,则可以使用键值对。
<强> Live Demo 强>
$("#test").data("1", {name:"foo",answer:"bar"});
$("#test").data("2", {name:"john",answer:"doe"});
正如@Heart所指出的那样,这个数据是否重要,那么客户端上的存储是为客户开放的,可以修改。使用ssl并在用户从用户处获取它时可以节省数据安全性。
答案 1 :(得分:1)
为什么不尝试使用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
答案 2 :(得分:0)
我认为最简单的解决方案是首先从元素中获取数据,将其存储在变量中,追加新数据,然后将数据重新添加到元素中。
var data = [];
//get your existing data
data.push($("#test").data());
//add your new data
data.push({name:"john",answer:"doe"});
$("#test").data(data);