Javascript 如何使用对象设置jQuery.data()

Javascript 如何使用对象设置jQuery.data(),javascript,jquery,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。非常感谢您的帮助!谢谢 这是因为在第二个版本中,您引用的是键

我目前正在尝试使用.data()方法使用变量存储数据。然而,由于某些原因,它不起作用。以下是我的概念验证代码:

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

令人惊讶的是,这两个警报都返回0,而不是0,然后返回20。非常感谢您的帮助!谢谢

这是因为在第二个版本中,您引用的是键“option”,而不是变量选项(键“x”)

更简单的版本是:

option = 'x';
console.log({option: 20});
产出:

Object { option=20 }
但是,您可以将与变量一起使用

$(this).data(option, 20 );

这是因为在第二个版本中,您引用的是键“option”,而不是变量选项(键“x”)

更简单的版本是:

option = 'x';
console.log({option: 20});
产出:

Object { option=20 }
但是,您可以将与变量一起使用

$(this).data(option, 20 );

您想访问该属性。。。像这样

$(this).data({ option : 20 });
alert($(this).data('option'));

您想访问该属性。。。像这样

$(this).data({ option : 20 });
alert($(this).data('option'));

原因是你的第二个

$(this).data({ option : 20 }); 
20
设置为
选项
属性,而实际上是要将其设置为
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)); 

原因是你的第二个

$(this).data({ option : 20 }); 
20
设置为
选项
属性,而实际上是要将其设置为
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)); 

问题是对象文本中的
选项
关键字被解释为键的文本字符串,而不是
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));

问题是对象文本中的
选项
关键字被解释为键的文本字符串,而不是
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));

数据对象的键不能是变量

$(this).data(option, 20 );
您可以做的是:

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

数据对象的键不能是变量

$(this).data(option, 20 );
您可以做的是:

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

既然回答了这个问题,让我告诉你一个秘密:用户Chrome或Firefox开发者工具,使用console.log(…)而不是alert(…),这将为你节省大量时间。既然回答了这个问题,让我告诉你一个秘密:用户Chrome或Firefox开发者工具,使用console.log(…)而不是alert(…),这将为您节省大量时间。感谢您的澄清。但是,如何在不显式使用“x”的情况下设置“x”的数据值?或者,如何在不使用“x”的情况下设置“x”的值。谢谢谢谢你的澄清。但是,如何在不显式使用“x”的情况下设置“x”的数据值?或者,如何在不使用“x”的情况下设置“x”的值。谢谢