Poiché non posso commentare, quindi scriverò questo come una risposta!
Comprendi la differenza tra il selettore CSS ": hover" e l'evento hover!
": hover" è un selettore css ed è stato effettivamente rimosso con l'evento quando utilizzato in questo modo $("#elementId").is(":hover")
, ma nel suo significato non ha davvero nulla a che fare con l'hover degli eventi jQuery.
se codifichi $("#elementId:hover")
, l'elemento verrà selezionato solo quando si passa con il mouse. l'istruzione sopra funzionerà con tutte le versioni di jQuery mentre selezioni questo elemento con selezione css pura e legittima.
D'altra parte, il passaggio del mouse sull'evento che è
$("#elementId").hover(
function() {
doSomething();
}
);
è infatti deprecato come jQuery 1.8 qui lo stato dal sito Web jQuery:
Quando viene utilizzato il nome dell'evento "hover", il sottosistema evento lo converte in "mouseenter mouseleave" nella stringa dell'evento. Questo è fastidioso per diversi motivi:
Semantica: il passaggio del mouse non è lo stesso del mouse che entra e esce da un elemento, implica una certa quantità di decelerazione o ritardo prima di sparare. Nome evento: il tipo di evento restituito dal gestore collegato non è al passaggio del mouse, ma mouseenter o mouseleave. Nessun altro evento fa questo. Cooptazione del nome "hover": non è possibile associare un evento con il nome "hover" e attivarlo utilizzando .trigger ("hover"). I documenti già chiamano questo nome "fortemente scoraggiato per il nuovo codice", vorrei deprecarlo ufficialmente per 1.8 e alla fine rimuoverlo.
Perché hanno rimosso l'utilizzo è (": hover") non è chiaro ma vabbè, puoi ancora usarlo come sopra e qui c'è un piccolo trucco per usarlo ancora.
(function ($) {
/**
* :hover selector was removed from jQuery 1.8+ and cannot be used with .is(":hover")
* but using it in this way it works as :hover is css selector!
*
**/
$.fn.isMouseOver = function() {
return $(this).parent().find($(this).selector + ":hover").length > 0;
};
})(jQuery);
Oh, e non consiglierei la versione di timeout in quanto ciò porta molta complessità , utilizzare le funzionalità di timeout per questo tipo di cose se non c'è altro modo e credetemi, nel 95% per cento di tutti i casi c'è un altro modo !
Spero di poter aiutare un paio di persone là fuori.
Salve Andy