2012-01-03 67 views
2

我已经创建了jQuery动画的对象字面值,并且正在寻找将此传递给animate()的简洁方法。.apply()方法不适用于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 

回答

3

你必须为this正确的价值传递给apply。我认为这个工程:

$randomEl.animate.apply($randomEl, animations.slideLeft(100)); 

如果你打电话animate通常,像$randomEl.animate(...),那里面animatethis将参考$randomEl。因此,您必须将$randomEl作为第一个参数传递给apply,而不是this引用的内容。

有关更多信息,请参阅MDN documentation

+0

完美的作品,谢谢! – techjacker 2012-01-04 10:46:05

1

您向animate函数提供了错误的this参数。您应该通过$randomEl而不是this

+0

felix只是打你,但谢谢回答 – techjacker 2012-01-04 11:04:21

相关问题