Comme je ne peux pas commenter, je vais donc écrire ceci comme réponse!
Veuillez comprendre la différence entre le sélecteur css ": hover" et l'événement hover!
": hover" est un sélecteur css et a en effet été supprimé avec l'événement lorsqu'il était utilisé comme ceci $("#elementId").is(":hover")
, mais dans ce sens, cela n'a vraiment rien à voir avec le survol de l'événement jQuery.
si vous codez $("#elementId:hover")
, l'élément ne sera sélectionné que lorsque vous survolerez avec la souris. la déclaration ci-dessus fonctionnera avec toutes les versions de jQuery en sélectionnant cet élément avec une sélection CSS pure et légitime.
D'un autre côté, le survol de l'événement qui est
$("#elementId").hover(
function() {
doSomething();
}
);
est en effet déconseillé comme jQuery 1.8 ici l'état du site jQuery:
Lorsque le nom d'événement "hover" est utilisé, le sous-système d'événement le convertit en "mouseenter mouseleave" dans la chaîne d'événement. C'est ennuyeux pour plusieurs raisons:
Sémantique: le vol stationnaire n'est pas la même chose que l'entrée et la sortie de la souris d'un élément, cela implique une certaine décélération ou retard avant le tir. Nom de l'événement: le event.type renvoyé par le gestionnaire attaché n'est pas en survol, mais soit mouseenter ou mouseleave. Aucun autre événement ne fait cela. Cooptation du nom "hover": Il n'est pas possible d'attacher un événement avec le nom "hover" et de le déclencher en utilisant .trigger ("hover"). Les docs appellent déjà ce nom "fortement déconseillé pour le nouveau code", je voudrais le déprécier officiellement pour 1.8 et finalement le supprimer.
La raison pour laquelle ils ont supprimé l'utilisation (": hover") n'est pas claire, mais bon, vous pouvez toujours l'utiliser comme ci-dessus et voici un petit hack pour continuer à l'utiliser.
(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 et je ne recommanderais pas la version timeout car cela apporte beaucoup de complexité , utilisez des fonctionnalités de timeout pour ce genre de choses s'il n'y a pas d'autre moyen et croyez-moi, dans 95% des cas, il y a une autre façon !
J'espère pouvoir aider quelques personnes là-bas.
Greetz Andy