2

我试图将一个变量作为动画属性传递给 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)

请帮忙!

4

1 回答 1

2

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

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

$(element[0].selector).stop().animate(animationParams, 400, 'linear');
于 2013-05-10T22:20:52.297 回答