45 votos

¿Cuál es la diferencia entre jQuery mouseout() y mouseleave()?

¿Cuál es la diferencia entre jQuery mouseout() y mouseleave()?

56voto

meder Puntos 81864

El evento mouseleave difiere de mouseout en la forma en que maneja la propagación de los eventos. Si mouseout fueron utilizados en este ejemplo, cuando el puntero del ratón se mueve fuera del elemento Interior, el controlador se pondrían en marcha. Este es generalmente un comportamiento indeseable. El evento mouseleave, por otro lado, solo se activa con su controlador cuando el ratón sale del elemento que se está obligado a, no un descendiente. Así, en este ejemplo, el controlador se activa cuando el ratón sale del elemento Exterior, pero no el elemento Interior.

Fuente: http://api.jquery.com/mouseleave/

Sorprendentemente hay un montón de resultados @ http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=jquery+mouseleave+mouseout+diferencia

7voto

Darcy Puntos 1613

Puede haber momentos en mouseout es una mejor opción que la de mouseleave.

Por ejemplo, supongamos que ha creado un cuadro de información que desea que aparezca junto a un elemento en mouseenter. Utilice setTimeout para prevenir la descripción del apareciendo al instante. Desactiva el tiempo de espera en mouseleave uso de clearTimeout así que si el ratón sale de la descripción no se mostrará. Esto funcionará el 99% del tiempo.

Pero ahora vamos a decir que el elemento tiene una descripción adjunta es un botón con un click evento, y también vamos a asumir este botón le pide al usuario con un confirm o alert cuadro. El usuario hace clic en el botón y el alert de los incendios. El usuario presiona lo suficientemente rápido que su descripción no tener una oportunidad de pop-up (tan lejos y tan bien).

El usuario presiona el alert cuadro botón ACEPTAR, y el ratón sale del elemento. Pero desde la página del navegador, está ahora en un estado bloqueado, no javascript fuego hasta que el ACEPTAR botón ha sido presionado, en el sentido de su mouseleave evento NO FUEGO. Después de que el usuario presiona ACEPTAR la descripción emergente (que no es lo que quería).

El uso de mouseout en este caso sería la solución más adecuada, porque es el fuego.

4voto

jAndy Puntos 93076

jQuery API doc:

mouseout

Este tipo de evento puede causar muchos dolores de cabeza debido a la propagación de los eventos. Por ejemplo, cuando el puntero del ratón se mueve fuera del elemento Interno en este ejemplo, un evento mouseout será enviada a que, luego de goteo hasta el Exterior. Esto puede desencadenar el obligado mouseout controlador en momentos inoportunos. Ver la discusión .mouseleave() para una alternativa útil.

Por lo mouseleave es un evento personalizado, el cual fue diseñado debido a la razón anterior.

http://api.jquery.com/mouseleave/

0voto

BeemerGuy Puntos 4418

Aquí tienes un buen tutorial y video de los diferentes jQuery eventos de ratón.
http://www.bennadel.com/blog/1805-jQuery-Events-MouseOver-MouseOut-vs-MouseEnter-MouseLeave.htm

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: