2010-11-23 31 views
6

C'est un problème que je ne cesse de rencontrer. Si par exemple j'ai un menu de navigation déroulant utilisant une fonction jQuery hover() et que je déplace rapidement le curseur de ma souris sur le <li> environ 10 fois, la sous-navigation apparaîtra, puis disparaîtra 10 fois.jQuery - Prévention de la mise en file d'attente des fonctions du vol stationnaire à partir des mouvements rapides de la souris

Est-il possible d'empêcher ce problème?

Merci

+3

très similaires, 3 minutes plus: http://stackoverflow.com/questions/4256962/jquery-show-hide-question- about-the-delay-variable – sje397

+0

Je le fais souvent, mais cette fois je n'ai pas de code à poster, juste une question :) – Probocop

+0

@ sje397 Bonne trouvaille. Meilleure explication de HoverIntent là aussi. –

Répondre

7

Oui, utilisez la fonction d'arrêt!

$(this).stop().animate(...); 

Ou

$(this).stop().show(); 
1

Eh bien vous pouvez délie l'événement sur l'entrée à elle, et le lier à nouveau à la sortie. J'ai tendance à utiliser des variables de sémaphore quand je ne peux pas me permettre une rentrée. Cela dit, l'événement hover() lui-même n'est probablement pas en file d'attente, mais les animations elles-mêmes. Notez que vous avez à nouveau une animation en cours (sémaphores), et n'en créez pas d'autre, ou stop() l'animation (s) en cours avant de continuer.

3

utiliser la fonction stop() pour effacer la file d'attente d'animation d'un élément:

$(this).stop(true).show();