我正在为Jquery创建一个插件,并且需要将变量作为对象中的键。
$(selector).animate({self.settings.direction: '+='+self.displacement+'px'}, "slow" , function () {});
此部分导致错误:
self.settings.direction
我的语法错误的任何想法? 谢谢
答案 0 :(得分:84)
AFAIK,你做不到。对象文字表示法中冒号前面的任何内容都将自动解释为字符串。您需要事先构造对象,并使用方括号表示法。
var options = {}
options[self.settings.direction] = '+=' + self.displacement + 'px';
$(selector).animate(options, "slow" , function () {});
答案 1 :(得分:11)
如果值也是字符串,则可以使用JSON.parse:
var a = 'key';
var b = 'value';
var test = JSON.parse('{"' + a + '":"' + b + '"}"');
//test = {key: 'value'}
答案 2 :(得分:7)
您可以使用toString()访问变量定义的字符串。 所以:
var obj = new Object;
obj.a = 0;
obj.b = 1;
var a = "b";
obj["a"]; // will output 0
obj[a.toString()] // will output 1
答案 3 :(得分:1)
请记住,您在大括号之间定义了一个对象。您不能在属性名称中使用点。假设置换属性在之前的其他位置设置,这将适合您:
$(selector).animate({settings: {direction: '+='+self.displacement+'px'}}, "slow" , function () {})