2013-07-11 23 views
89

Quali sono le differenze tra la funzione jquery .mouseover() e .hover()? Se sono totalmente uguali perché jQuery usa entrambi?quando scegliere la funzione mouseover() e hover()

+4

Questa non è una domanda duplicata. il tuo link fornito ha eventi mouseover e mouseenter ma il mio è mouseover e hover. –

+1

sono diversi come mouseover nad mouseleave e la risposta accettata sotto non è accurata ... la funzione hover aggiunge un mouseenter e mouse non eventi non mouseover e mouseout eventi –

+1

vedi http://jsfiddle.net/arunpjohny/cZb5b/ 1/sposta il mouse dall'elemento 'el' a' child' e controlla la console –

risposta

87

Dalla documentazione

.mouseover(): source

associare un gestore di eventi per il "passaggio del mouse" JavaScript evento, o innescare l'evento su un elemento.

.hover(): source

Bind uno o due operatori agli elementi corrispondenti, da eseguire quando il puntatore del mouse entra e foglie gli elementi.

Calling $(selector).hover(handlerIn, handlerOut) è una scorciatoia per: $(selector).mouseenter(handlerIn).mouseleave(handlerOut);

.mouseenter(): source

Bind un gestore di eventi per essere licenziato quando il mouse entra un elemento, o un trigger che handler su un elemento.

mouseover si attiva quando il puntatore si sposta anche nell'elemento figlio, mentre mouseenter si attiva solo quando il puntatore si sposta nell'elemento associato.

Ciò significa

Per questo motivo, non è .mouseover() la stessa .hover(), per lo stesso motivo .mouseover() non la stessa .mouseenter().

$('selector').mouseover(over_function) // may fire multiple times 

// enter and exit functions only called once per element per entry and exit 
$('selector').hover(enter_function, exit_function) 
26

.hover() La funzione accetta due argomenti di funzione, uno per l'evento mouseenter e uno per l'evento mouseleave.

1

Dai documenti ufficiali dei: (http://api.jquery.com/hover/)

Il metodo .hover() lega i gestori per entrambi MouseEnter ed eventi mouseLeave. Puoi usarlo per applicare semplicemente il comportamento a un elemento durante il tempo in cui il mouse si trova all'interno dell'elemento.

1

Come si può leggere a http://api.jquery.com/mouseenter/

Il mouseenter evento JavaScript è di proprietà di Internet Explorer. A causa dell'utilità generale dell'evento, jQuery simula questo evento così che può essere utilizzato indipendentemente dal browser. Questo evento viene inviato a un elemento quando il puntatore del mouse entra nell'elemento. Qualsiasi elemento HTML può ricevere questo evento.

6

Si può provare http://api.jquery.com/mouseover/ sulla pagina doc jQuery. È una piccola demo interattiva che lo rende molto chiaro e puoi vederlo da solo.

In breve, si noterà che un evento di mouse su un elemento si verifica quando ci si trova sopra esso, proveniente dal relativo elemento figlio O padre, ma un evento di immissione del mouse si verifica solo quando il mouse si sposta dall'elemento padre all'elemento