2009-05-19 8 views
3

ich eine einfache ungeordnete Liste mit Listenelementen habe als Menüpunkt ich die Jquery erstellt gerade einen lustigen Rollover-Effekt Wesen zu haben:jquery einfache Menüüberschlags (ohne Animation Warteschlange)

$('#nav ul ul li').hover(function(){ 
$(this).animate({ 
     marginLeft: "20px", 
     }, 300); 
}, function(){ 
$(this).animate({ 
     marginLeft: "0px", 
     }, 300); 
}); 

das Problem Bei diesem Skript wird, wenn Sie mehrmals über das Menü rennen, eine Animationswarteschlange aufgebaut. Ich habe versucht, .stop() dazwischen zu verwenden, aber es stoppt auch die Animationen von den anderen Listenelementen, die auf jeden Fall in den Standardzustand zurückkehren sollten. gibt es eine Möglichkeit, die Warteschlange pro Element zu stoppen()? aber nicht für die ganze liste?

Antwort

3

Ich sehe nicht, warum $ (this) .stop() .animate (...) nicht für Sie arbeiten, aber Sie können auch versuchen, diesen Ansatz:

$(":not(:animated)", this).animate(...) 

denen triggern nur die Animation auf Elementen, die gerade nicht animiert sind

+1

wo würdest du den stop() dann hinzufügen? weil, was ich mit Stopps habe, ist, dass, wenn Sie über die ganze Liste eilen, das 10. Element zum Beispiel Stop verwendet und animiert seinen Weg zu 20 Pixel nach rechts, aber der Stopp verhinderte vorherige Elemente 1 - 9 aus dem Standardzustand zurückzukehren . 20 Pixel übrig. – Sander

+0

Uuhm, Sander Ich bin mir nicht sicher, ich verstehe das genaue Problem, das Sie haben, können Sie bitte Ihre js/html online http://jsbin.com – duckyflip

+0

hm, ich merke gerade jetzt meinen Fehler Ich fügte hinzu die .stop () @ das Ende, nach dem Animieren. Ich benutzte es wie Sie (vorher) und das scheint in Ordnung zu sein. dank ja das Ergebnis kann @ www.komtuveu.be (linkes Menü) gesehen werden, obwohl diese HTML-ol Liste mit Text, nur einfach jetzt kann ich es Stil und das Bild hinzufügen. Vielen Dank – Sander