[英]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"
}
}
*/
这样你的对象就会是独一无二的。
我认为这是添加新数据的最简单的解决方案:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.