2009-04-01 6 views
0

Um zum Beispiel ein Feld von links zu animieren, kann ich „links“ auf den negativen Wert von „Breite“ gesetzt und animieren sie auf Null:Setzen Sie eine CSS-Eigenschaft in JQuery auf den Wert einer anderen?

$('.box').each(function(){ 
     $(this) 
      .css('left', $(this).width()*-1) 
      .animate({'left':0},1000) 
      ; 
}); 

Gibt es eine Möglichkeit, dies ohne das zu tun jede Funktion? DIESE JQUERY IST ZU VERBOSE!

Antwort

0

Setzen Sie die function in eine eigene Funktion namens animateBox(). Dann können Sie dies tun:

$('.box').each(animateBox); 
+0

Vielen Dank für die Antwort, aber das ist nicht wirklich das, was ich verlangen. Ich habe nur versucht zu sehen, ob es irgendeine jQuery-Magie gibt, die mir nicht bewusst ist. – Jerph

1

Ich bin nicht sicher, warum Sie benötigt die „jeder“ in erster Linie hinzuzufügen, weil die meisten jQuery-Funktionen arbeiten auf mehrere Elemente gleichzeitig. Dies sollte funktionieren:

$('.box').css('left', $(this).width()*-1).animate({'left':0},1000); 

EDIT: Code nicht wie in den Kommentaren erwähnt arbeiten, weil $ (this) bezieht sich nicht auf das richtige Objekt. Dies sollte es beheben:

var $box = $box.css('left', $box.width()*-1).animate({'left':0},1000); 
+0

Liegt das "this" in Ihrem Beispiel nicht in dem Bereich, der die gesamte Anweisung enthält, nicht im Bereich von $ ('. Box')? – Jerph

Verwandte Themen