Ich war begeistert, als ich zum ersten Mal auf die .animate-Funktion von jQuery stieß. Aber wenn ich z.B. ändere die Farbe einer Box mit dieser Funktion auf .mouseover, es wird (natürlich) die Animation vervollständigen, obwohl die Maus die Box bereits verlassen hat und eine weitere Animation, die die Farbe umkehrt, wurde auf .mouseleave aufgerufen.JS/jQuery: Reverse-Animation ausgelöst durch Hover?
Dies führt z.B. zu flattern, wenn Sie mehrmals mit der Maus über die Box fahren und die Animation 20 Mal oder so wiederholt wird.
Um eine Animation zu stoppen/um die Farbänderung umzukehren, wenn sich die Maus nicht mehr auf der Box befindet, können Sie z. diese Kombination von Funktionen dieser Frage, die bereits gefragt: jQuery - Animation transition interrupted by hover
Hier ist der Beispielcode für diese Frage für eine ähnliche Animation: http://jsfiddle.net/B9wx8/30/
$('.box1,.box2').mouseenter(function() {
$('.box2').stop().animate({
top: 0
}, 'slow');
}).mouseleave(function() {
$('.box2').stop().animate({
top: '-200px'
}, 'slow');
});
Das scheint nicht sehr elegant und kompliziert. Gibt es eine jQuery-Funktion, die fast wie .animate ist, aber die Animation nach z. Die Maus ist nicht mehr in der Box?
Etwas wie:
$('.myClass').animate_and_reverse_animation_if_hover_ends({...} , 500);
Well keine (_as weit ich bin aware_), da es eine ziemlich spezifische Animation ist. Sie können immer Ihre eigenen Plugins für jQuery schreiben, so dass Sie '$ ('. MyClass') aufrufen können. Animate_and_reverse_animation_if_hover_ends ({...}, 500);' und lassen Sie es tun, was Sie wollen. – George
Btw., Das ist ein Problem, das Sie nicht mit CSS-Animationen oder Übergängen an erster Stelle haben ... – CBroe