我目前正在尝试使用.data()方法来使用变量存储数据。但是,由于某种原因,它无法正常工作。这是我的概念证明代码:
var option = 'x';
$(this).data({ 'x' : 0 });
alert($(this).data(option));
$(this).data({ option : 20 });
alert($(this).data(option));
令人惊讶的是,两个警报都返回0而不是0和20.任何帮助都非常感谢!谢谢!
答案 0 :(得分:3)
这是因为在第二个版本中,您引用了键“选项”而不是变量选项(键“x”)。
var option = 'x';
$(this).data({ 'x' : 7 });
console.log($(this).data(option));
$(this).data({ option : 20 });
console.log($(this).data('option'));
更简单的版本:
option = 'x';
console.log({option: 20});
输出:
Object { option=20 }
但是,您可以将key value syntax与变量一起使用。
$(this).data(option, 20 );
答案 1 :(得分:2)
您想要访问该属性......就像这样......
$(this).data({ option : 20 });
alert($(this).data('option'));
答案 2 :(得分:1)
问题在于,对象文字中的option
关键字被解释为键的文字字符串,而不是x
(这就是对象文字的工作方式)。如果您希望能够使用变量键,则需要使用临时对象。如,
var option = 'x';
$(this).data({ 'x' : 0 });
alert($(this).data(option));
// create a data object so you can use a variable for the key
var obj = {};
obj[option] = 20;
$(this).data(obj);
alert($(this).data(option));
答案 3 :(得分:0)
原因是你的第二个
$(this).data({ option : 20 });
将20
设置为option
属性,当您确实将其设置为x
属性时。
我认为这是你想做的事情:
var option = 'x';
$(this).data({ x : 0 });
alert($(this).data(option));
$(this).data({ x : 20 });
alert($(this).data(option));
或者,您可以改为使用键值语法:
var option = 'x';
$(this).data(option, 0);
alert($(this).data(option));
$(this).data(option, 20);
alert($(this).data(option));
答案 4 :(得分:0)
数据对象的关键字不能是变量。
你能做的是:
var option = 'x';
var data = {};
data['x'] = '0';
$(this).data(data);
alert($(this).data(option));