Quando scegliere le funzioni mouseover () e hover ()?


112

Quali sono le differenze tra jQuery .mouseover()e .hover()functions? Se sono totalmente uguali perché jQuery li usa entrambi?


4
Questa non è una domanda duplicata. il collegamento fornito ha eventi mouseover e mouseenter, ma il mio è mouseover e eventi hover.
Bhojendra Rauniyar

1
sono diversi allo stesso modo di mouseover nad mouseleave e la risposta accettata di seguito non è accurata ... la funzione hover aggiunge un mouseenter e eventi mouseleve non eventi mouseover e mouseout
Arun P Johny

1
vedi jsfiddle.net/arunpjohny/cZb5b/1 sposta il mouse eldall'elemento a childe controlla la console
Arun P Johny

@ ArunPJohny per favore rileggi, questo significa che mouseenter e mouseleave non mouseover e mouseout.
Bhojendra Rauniyar

1
anche con hover - jsfiddle.net/arunpjohny/cZb5b/2 se puoi analizzare la console, puoi trovare la differenza ...
Arun P Johny

Risposte:


113

Dalla documentazione ufficiale di jQuery

  • .mouseover()
    Associa un gestore di eventi all'evento JavaScript "mouseover" o attiva quell'evento su un elemento.

  • .hover() Associa uno o due gestori agli elementi corrispondenti, da eseguire quando il puntatore del mouse entra e esce dagli elementi.

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


  • .mouseenter()

    Associa un gestore di eventi da attivare quando il mouse entra in un elemento o attiva quel gestore su un elemento.

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


Cosa significa

Per questo motivo , non.mouseover() è lo stesso di , per lo stesso motivo non è lo stesso di ..hover().mouseover().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) 

31

.hover()funzione accetta due argomenti di funzione, uno per mouseenterevento e uno per mouseleaveevento.


questo è un ottimo punto in termini di differenze tra le due funzioni menzionate nel titolo della domanda, grazie! controlla il link qui sotto su w3schools per come funziona .hover (): w3schools.com/jquery/event_hover.asp
Bahman.A

8

Puoi provarlo http://api.jquery.com/mouseover/ nella pagina della documentazione di jQuery. È una piccola demo interattiva che lo rende molto chiaro e puoi effettivamente vedere di persona.

In breve, noterai che un evento di passaggio del mouse si verifica su un elemento quando ci sei sopra - proveniente dal suo elemento figlio O genitore, ma un evento di inserimento del mouse si verifica solo quando il mouse si sposta dall'elemento padre all'elemento.


1

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

Il metodo .hover () lega i gestori sia per gli eventi mouseenter che per gli 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 puoi leggere su http://api.jquery.com/mouseenter/

L'evento JavaScript mouseenter è proprietario di Internet Explorer. A causa dell'utilità generale dell'evento, jQuery simula questo evento in modo che possa 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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.