为什么以下工作?
<something>.stop().animate(
{ 'top' : 10 }, 10
);
而这不起作用:
var thetop = 'top';
<something>.stop().animate(
{ thetop : 10 }, 10
);
为了更清楚:目前我无法将 CSS 属性作为变量传递给 animate 函数。
原文由 speendo 发布,翻译遵循 CC BY-SA 4.0 许可协议
为什么以下工作?
<something>.stop().animate(
{ 'top' : 10 }, 10
);
而这不起作用:
var thetop = 'top';
<something>.stop().animate(
{ thetop : 10 }, 10
);
为了更清楚:目前我无法将 CSS 属性作为变量传递给 animate 函数。
原文由 speendo 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 ECMAScript 2015 ,您现在可以在对象声明中使用方括号符号直接执行此操作:
var obj = {
[key]: value
}
其中 key
可以是返回值的任何类型的表达式(例如变量)。
所以在这里你的代码看起来像:
<something>.stop().animate({
[thetop]: 10
}, 10)
其中 thetop
将在用作密钥之前进行评估。
原文由 kube 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
{ thetop : 10 }
是一个有效的对象字面量。该代码将创建一个对象,其属性名为thetop
,其值为 10。以下两者相同:在 ES5 及更早版本中,您不能将变量用作对象文字内的属性名称。您唯一的选择是执行以下操作:
ES6 将 ComputedPropertyName 定义为对象文字语法的一部分,它允许您编写如下代码:
您可以在每个主流浏览器的最新版本中使用这种新语法。