我正在尝试将变量传递给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)
请帮忙!
答案 0 :(得分:2)
那是因为你不能将变量用作对象文字中的键。实现这一目标的解决方案是创建一个空对象,然后使用括号表示法从变量中命名一个新键:
var animationAttribute = 'left';
var newTarget = 500;
var animationParams = {};
animationParams[animationAttribute] = newTarget;
$(element[0].selector).stop().animate(animationParams, 400, 'linear');