Domanda Qual è la differenza tra jQuery's mouseout () e mouseleave ()?


Qual è la differenza tra jQuery's mouseout () e mouseleave ()?


80
2017-11-23 16:55


origine


risposte:


L'evento mouseleave differisce da mouseout nel modo in cui gestisce il bubbling degli eventi. Se in questo esempio sono stati utilizzati mouseout, quando il puntatore del mouse si spostava fuori dall'elemento Inner, il gestore veniva attivato. Questo è di solito un comportamento indesiderato. L'evento di mouseleave, d'altra parte, fa scattare il suo gestore solo quando il mouse lascia l'elemento a cui è legato, non un discendente. In questo esempio, il gestore viene attivato quando il mouse lascia l'elemento Esterno, ma non l'elemento Interno.

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

Sorprendentemente ci sono molti risultati @ http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=jquery+mouseleave+mouseout+difference


88
2017-11-23 16:57



Ci possono essere momenti in cui mouseout è una scelta migliore di mouseleave.

Ad esempio, supponiamo tu abbia creato un suggerimento da visualizzare accanto a un elemento mouseenter. Usate setTimeout per evitare che il suggerimento venga visualizzato immediatamente. Si cancella il timeout mouseleave utilizzando clearTimeout quindi se il mouse lascia il suggerimento non verrà visualizzato. Questo funzionerà il 99% delle volte.

Ma ora diciamo che l'elemento a cui è associato un tooltip è un pulsante con a click evento, e assumiamo anche che questo pulsante richieda all'utente con a confirm o alert scatola. L'utente fa clic sul pulsante e sul alert incendi. L'utente lo ha premuto abbastanza velocemente che il tuo suggerimento non ha avuto la possibilità di apparire (finora così buono).

L'utente preme il alert casella OK e il mouse lascia l'elemento. Ma dal momento che la pagina del browser è ora bloccata, nessun javascript verrà attivato finché non verrà premuto il pulsante OK, ovvero il tuo mouseleave evento NON FUOCO. Dopo che l'utente ha premuto OK, verrà visualizzata la descrizione comando (che non è ciò che volevi).

utilizzando mouseout in questo caso sarebbe la soluzione appropriata perché sparerà.


12
2017-07-12 15:54



Documento API jQuery:

mouseout

Questo tipo di evento può causare molti mal di testa a causa del bubbling degli eventi. Ad esempio, quando il puntatore del mouse si sposta fuori dall'elemento Inner in questo esempio, verrà inviato un evento mouseout a quel punto, quindi passerà a Outer. Questo può attivare il gestore del mouseout associato in tempi inopportuni. Vedi la discussione per .mouseleave () per un'alternativa utile.

Così mouseleave è un evento personalizzato, che è stato progettato a causa del motivo sopra.

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


10
2017-11-23 16:59