我已经创建了一个jQuery动画的对象文字,我正在寻找一种将其传递给animate()
的简洁方法。
不幸的是,.apply()
似乎无法与animate()
一起使用,因此我不得不求助于使用索引 - 我想知道为什么会这样,以及如何让它与之合作.apply()
。
var animations = {
slideLeft : function (moveLeft) {
return [{
left: moveLeft
}, {
duration: 300,
easing: 'swingy'
}];
}
};
$randomEl.animate.apply(this, animations.slideLeft(100)); // doesn't work
$randomEl.animate(animations.slideLeft(100)[0], animations.slideLeft(100)[1]); // does work
答案 0 :(得分:3)
您必须将this
的正确值传递给apply
。我认为这有效:
$randomEl.animate.apply($randomEl, animations.slideLeft(100));
如果您正常致电animate
,例如$randomEl.animate(...)
,那么animate
内,this
会引用$randomEl
。因此,您必须将$randomEl
作为第一个参数传递给apply
,而不是this
引用的任何参数。
有关详细信息,请参阅MDN documentation。
答案 1 :(得分:1)
您为animate函数提供了错误的this
参数。您应该通过$randomEl
而不是this
。