Risposta originale (e corretta):
È possibile utilizzare is()
e verificare il selettore :hover
.
var isHovered = $('#elem').is(":hover"); // returns true or false
Esempio: http://jsfiddle.net/Meligy/2kyaJ/3/
(Funziona solo quando il selettore corrisponde a UN elemento max. Vedi Modifica 3 per ulteriori informazioni)
.
Modifica 1 (29 giugno 2013): (Applicabile solo a jQuery 1.9.x, poiché funziona con 1.10+, vedere la successiva Modifica 2)
Questa risposta era la soluzione migliore al momento della risposta alla domanda. Questo selettore ': hover' è stato rimosso con la .hover()
rimozione del metodo in jQuery 1.9.x.
È interessante notare che una recente risposta di "allicarn" mostra che è possibile utilizzare :hover
come selettore CSS (vs. Sizzle) quando lo si antepone con un selettore $($(this).selector + ":hover").length > 0
e sembra funzionare!
Inoltre, il plug-in hoverIntent menzionato in un'altra risposta sembra anche molto bello.
Modifica 2 (21 settembre 2013): .is(":hover")
funziona
Sulla base di un altro commento ho notato che il modo originale in cui ho postato .is(":hover")
, in realtà funziona ancora in jQuery, quindi.
Ha funzionato in jQuery 1.7.x.
Ha smesso di funzionare in 1.9.1, quando qualcuno me l'ha segnalato e tutti pensavamo fosse correlato a jQuery che rimuoveva l' hover
alias per la gestione degli eventi in quella versione.
Ha funzionato di nuovo in jQuery 1.10.1 e 2.0.2 (forse 2.0.x), il che suggerisce che il fallimento in 1.9.x era un bug o un comportamento non intenzionale come pensavamo nel punto precedente.
Se vuoi testarlo in una particolare versione di jQuery, apri l'esempio JSFidlle all'inizio di questa risposta, passa alla versione jQuery desiderata e fai clic su "Esegui". Se il colore cambia al passaggio del mouse, funziona.
.
Modifica 3 (9 marzo 2014): funziona solo quando la sequenza jQuery contiene un singolo elemento
Come mostrato da @Wilmer nei commenti, ha un violino che non funziona nemmeno contro le versioni jQuery che io e altri qui abbiamo testato. Quando ho cercato di scoprire le particolarità del suo caso, ho notato che stava cercando di controllare più elementi alla volta. Questo stava lanciando Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: hover
.
Quindi, lavorando con il suo violino, questo NON funziona:
var isHovered = !!$('#up, #down').filter(":hover").length;
Anche se questo DOES lavoro:
var isHovered = !!$('#up,#down').
filter(function() { return $(this).is(":hover"); }).length;
Funziona anche con sequenze jQuery che contengono un singolo elemento, come se il selettore originale corrispondesse a un solo elemento o se hai chiamato .first()
i risultati, ecc.
Questo è anche indicato nella mia newsletter JavaScript + Web Dev Tips & Resources .