over not lost lose javascript jquery mouseout mouseleave

javascript - not - ¿Cuál es la diferencia entre jQuery''s mouseout() y mouseleave()?



mouseleave jq (3)

El evento mouseleave difiere del mouseout en la forma en que maneja el evento de burbujeo. Si se utilizó mouseout en este ejemplo, cuando el puntero del mouse se movió fuera del elemento interno, el controlador se activaría. Esto generalmente es un comportamiento indeseable. El evento mouseleave, por otro lado, solo activa su controlador cuando el mouse deja el elemento al que está vinculado, no un descendiente. Por lo tanto, en este ejemplo, el controlador se activa cuando el mouse deja el elemento externo, pero no el elemento interno.

Fuente: api.jquery.com/mouseleave

Sorprendentemente, hay muchos resultados @ http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=jquery+mouseleave+mouseout+difference

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


jQuery API doc:

mouseout

Este tipo de evento puede causar muchos dolores de cabeza debido al burbujeo del evento. Por ejemplo, cuando el puntero del mouse se mueve fuera del elemento interno en este ejemplo, se enviará un evento mouseout a eso, luego se filtrará a Outer. Esto puede desencadenar el controlador de mouseout encuadernado en momentos inoportunos. Consulte la discusión sobre .mouseleave () para una alternativa útil.

Así que mouseleave es un evento personalizado, que fue diseñado por la razón anterior.

api.jquery.com/mouseleave


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

Por ejemplo, supongamos que ha creado una información sobre herramientas que desea mostrar junto a un elemento en mouseenter . Utiliza setTimeout para evitar que la información sobre herramientas aparezca de forma instantánea. mouseleave el tiempo de espera en mouseleave usando clearTimeout por lo que si el mouse deja la información sobre herramientas no se mostrará. Esto funcionará el 99% del tiempo.

Pero ahora digamos que el elemento al que tiene adjuntada una información sobre herramientas es un botón con un evento de click , y asumamos que este botón solicita al usuario un cuadro de confirm o de alert . El usuario hace clic en el botón y se alert la alert . El usuario lo presionó lo suficientemente rápido como para que tu información sobre herramientas no tuviese la oportunidad de aparecer (hasta ahora todo bien).

El usuario presiona el botón Aceptar del cuadro de alert y el mouse deja el elemento. Pero como la página del navegador ahora está bloqueada, ningún javascript se activará hasta que se presione el botón OK, lo que significa que el evento mouseleave NO mouseleave . Después de que el usuario presione OK, aparecerá la información sobre herramientas (que no es lo que usted quería).

Usar mouseout en este caso sería la solución adecuada porque se disparará.