2010-11-23 6 views
6

Este es un problema que parece que sigo encontrando. Si, por ejemplo, tengo un menú desplegable de navegación usando una función jQuery hover() y muevo rápidamente el cursor de mi mouse sobre el <li> unas 10 veces, el subnaveo aparecerá y luego desaparecerá 10 veces.jQuery - Prevención de la cola de espera de funciones de movimientos rápidos del mouse

¿Hay alguna forma de evitar este problema?

Gracias

+3

Muy similar, 3 minutos más: http://stackoverflow.com/questions/4256962/jquery-show-hide-question- about-the-delay-variable – sje397

+0

A menudo sí, pero esta vez no tengo código para publicar, solo una pregunta :) – Probocop

+0

@ sje397 Buen hallazgo. Mejor explicación de HoverIntent allí también. –

Respuesta

7

Sí, utilice la función de parada!

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

O

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

Bien se podría desatar el evento en la entrada a la misma, y ​​se unen de nuevo en la salida. Tiendo a usar variables de semáforo cuando no puedo pagar el reingreso.

Habiendo dicho eso, el evento hover() en sí mismo probablemente no esté haciendo cola, sino las animaciones mismas. O bien nota que tienes una animación en progreso (semáforos) de nuevo, y no emite otra, o stop() las animaciones en progreso antes de continuar.

3

utilizar la función stop() a borrar la cola de la animación de un elemento:

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