2010-11-29 17 views
2

Es ist schwer für mich, so zu erklären, ich will nur zeigen, was ich zu tun versucht:

Diese Arbeit fein:

$(this).animate({ top: 200 }, 500); 

Ich versuche, den ‚top‘ Wert durch eine Variable zu ersetzen

wie folgt aus:

var x = 'top';  
if (condition) { x = 'left'; }  
$(this).animate({ x: 200 }, 500); 

Aber dies fehlschlagen.

Antwort

2

Sie können dies versuchen.

var pos = {'top':200};  
if (condition) { pos = {'left':200}; }  
$(this).animate(pos, 500); 
3

Sie übergeben ein Objekt - definieren Sie es vorher so. Wo x kann alles sein, das heißt 'top', 'links' usw.

obj[x] = 200; 

$(this).animate(obj, 500); 
+0

nichts ... –

+0

Nein. Es kann alles sein. Obwohl animate nur CSS-Eigenschaften akzeptiert. –

+0

Ich verstehe was er will, nämlich eine dynamische Animation aufzubauen. Das Properties-Objekt kann immer noch die gleichen CSS-Requisiten haben. –

0

Top ist ein parameter. Sie können CSS-Eigenschaften übergeben.

Eine Karte der CSS-Eigenschaften, auf die sich die Animation bewegt.

+0

Er fragt, wie variable/dynamische CSS-Eigenschaften übergeben werden. –

0

Ich bin ein bisschen spät, um die Partei, aber man konnte diesen Objektschlüssel zu berechnen, wenn Sie ES6 verwenden:

x = 'top';  
if (condition) { x = 'left'; }  
$(this).animate({ [x]: 200 }, 500); 

Referenz: MDN