molily: jQuery Problem

Beitrag lesen

while($("#zwei").offset().left>$("#drei").offset().left)

{
$("#drei").animate({"left": "+=5px"}, "fast");
}

  
Führe dir einmal vor Augen, was animate macht. Es startet eine Animation, bei welcher mit setTimeout alle paar Millisekunden eine Funktion aufgerufen wird, die den left-Wert um einen Schritt erhöht.  
  
Wenn du nun in einer Schleife wieder und wieder Animationen startest, so speicht jQuery die m.W. einfach intern in der Animations-Queue, die nach und nach abgearbeitet wird.  
  
Wahrscheinlich hattest du vor, eine Endlosschleife zu programmieren, die ständig läuft und die Werte überwacht. Das kannst du in JavaScript nicht tun, damit hängst du nur den Browser auf.  
  
JavaScript funktioniert Event-basiert, es gibt aber keinen Event, der gefuert wird, sobald sich ein Element bewegt. Daher musst du die Problemstellung vereinfachen: Es gibt doch einen Grund, warum #zwei sich bewegt? Vermutlich wegen eines JavaScripts. An der richtigen Stelle dieses Scripts kannst du #drei so animieren, dass es #zwei folgt.  
  
Andernfalls müsstest du regelmäßig prüfen, ob sich #zwei bewegt hat. Das kannst du mit setTimeout oder setInterval tun. Etwa so:  
  
<http://jsfiddle.net/K7LbQ/>  
  
Wie gesagt, das ist natürlich gestellt, man könnte die Überprüfung auch einfach dort ausführen, wo #zwei verschoben wird, anstatt nachträglich mit setTimeout zu prüfen.  
  
Mathias