.apply()方法不适用于jQuery .animate()

时间:2012-01-03 15:45:09

标签: javascript jquery jquery-animate

我已经创建了一个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

2 个答案:

答案 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