2012-01-03 9 views
2

jQueryアニメーションのオブジェクトリテラルを作成しました。これをanimate()に渡す簡潔な方法を探しています。.apply()メソッドはjQueryで機能しません。アニメーション()

残念なことに、は、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

あなたはapplythisの正しい値を渡す必要があります。私は、この作品と仮定します。

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

あなたは$randomEl.animate(...)のように、通常animateを呼び出す場合は、animate内、this$randomElを参照します。したがって、最初の引数としてに$randomElを渡す必要があります。thisには何も関係しません。

詳細については、MDN documentationを参照してください。

+0

完璧に動作します、ありがとうございます! – techjacker

1

animate関数に間違ったパラメータを指定します。 thisの代わりに$randomElを渡す必要があります。

+0

フェリックスはちょうどそれにあなたを打つが、回答にも感謝 – techjacker

関連する問題