使用变量作为对象文字中的键(传递给jQuery的动画)?

时间:2013-05-10 22:19:17

标签: javascript jquery jquery-animate

我正在尝试将变量传递给jQuery的animate方法作为动画属性,我遇到了一些麻烦。这是我尝试过的:

// these first two would really be filled in from an external source:  
var animationAttribute = 'left';
var newTarget = 500;

var animationToPerform = { animationAttribute: newTarget };
$(element[0].selector).stop().animate(animationToPerform, 400, 'linear');

它根本不起作用,没有错误。如果我将属性硬编码为这样的动画:

var newTarget = 500;

var animationToPerform = { 'left': newTarget };
$(element[0].selector).stop().animate(animationToPerform, 400, 'linear');

这些应该完全相同,因为它返回true:

'left' === animationAttribute       // (evaluates as true)

请帮忙!

1 个答案:

答案 0 :(得分:2)

那是因为你不能将变量用作对象文字中的键。实现这一目标的解决方案是创建一个空对象,然后使用括号表示法从变量中命名一个新键:

var animationAttribute = 'left';
var newTarget = 500;
var animationParams = {};
animationParams[animationAttribute] = newTarget;

$(element[0].selector).stop().animate(animationParams, 400, 'linear');