如何使用object设置jQuery.data()

时间:2011-09-27 19:50:45

标签: javascript jquery

我目前正在尝试使用.data()方法来使用变量存储数据。但是,由于某种原因,它无法正常工作。这是我的概念证明代码:

var option = 'x';
$(this).data({ 'x' : 0 });
alert($(this).data(option));
$(this).data({ option : 20 });
alert($(this).data(option));

令人惊讶的是,两个警报都返回0而不是0和20.任何帮助都非常感谢!谢谢!

5 个答案:

答案 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));