Je viens de créer un simple bounce effect en jQuery mais je pense que le code n'est pas optimisé et que je cherche à l'améliorer.Amélioration de cette animation jQuery continue
var $square = $("#square");
bounce();
function bounce() {
$square.animate({
top: "+=10"
}, 300, function() {
$square.animate({
top: "-=10"
}, 300, function() {
bounce();
})
});
}
$square.hover(function() {
jQuery.fx.off = true;
}, function() {
jQuery.fx.off = false;
});
Tout ce que je l'ai fait est essentiellement créé une animation qui ajoute 10 à la coordonnée supérieure de l'élément, et en fonction de rappel, je soustrayant 10 Coordonnée supérieure ..
Cela crée un effet de rebond (presque lisse) mais je pense qu'il peut être amélioré.
En outre, je veux arrêter l'animation sur mouseenter
, et continuez sur mouseleave
.
stop(true, true)
n'a pas fonctionné, ni a fait dequeue()
donc j'ai eu recours à tous les effets de tourner animation à l'aide de jQuery.fx.off = true
(stupide, non?)
J'apprécierais des commentaires sur la façon dont cela peut être optimisé. Il s'agit d'un jsFiddle.
EDIT: Je viens de réaliser que jQuery a commencé à lancer des erreurs too much recursion
lors de la désactivation et de la réactivation des effets.
Merci à l'avance,
Marko
Je suppose que, en appelant le rebond() en lui-même en tant que rappel, génère une grande trace de la pile et donc des résultats dans une erreur trop de récursivité. – softcr
Le problème avec trop de récursion est qu'il y a trop de récursivité. –
Oui @Neil - et pour comprendre la récursivité, vous devez d'abord comprendre la récursivité. – Marko