11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour !

Je suis novice en Jquery et je suis confronté à une petite difficulté. Je suis en train d'animer un bouton au survol.

Je suis plus ou moins arrivé à ce que je souhaitais grâce à ce codequi me permet de shaker les boutons et de ne pas tenir compte de la sortie du survol (pour ne pas créer l'effet quand l'utilisateur essaie de repartir du bouton). Par contre, à chaque fois que l'utilisateur va survoler le bouton, l'action va rester en mémoire et elle va s'exécuter le nombre de fois que l'utilisateur a survolé le bouton.

C'est sûrement simple, mais je commence seulement à faire mes armes sur Jquery. J'ai essayé avec one() mais une fois exécuté, elle ne se reproduira plus jamais au hover. En gros, je ne veux juste qu'il prenne en compte le premier hover sur l'élément et que lors de l'exécution, il ne tienne pas rigueur des multitudes de hover qui peuvent être exécutés sur le bouton.

Petite question en bonus (un peu moins importante), j'ai l'impression qu'au hover, le bouton se déplace d'1px vers le haut. A quoi cela est dû ? Smiley confus

En vous remerciant par avance Smiley biggrin
Modifié par yourkaribbean (09 Apr 2017 - 13:59)
Bonjour yourkaribbean,
as-tu essayé de déclencher ton animation sur l'événement "mouseenter". Celui-ci ce produit qu'une seule fois lorsque tu va sur l'élément ...

Cordialement
Bonjour GJboba,

Je viens d'essayer mais ça ne fonctionne pas (jai mis le code à jour dans le JSFiddle), on peut toujours "flooder" le bouton.

En gros, peu importe le nombre de hover, l'effet ne doit s'exécuter qu'une seule fois, mais il doit pouvoir être réitéré si on refait un hover dessus après qu'il soit fini, donc le one() n'est pas adapté à ma situation ...
Je pense que ceci :

function(){
    $(this).removeClass('animated');
}


devrait plutôt se situer dans le callback (4éme argument) de la fonction effect() car actuellement cela doit enlever la class animated avant la fin de l'animation.
Meilleure solution