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