Existe-t-il un moyen d'obtenir les événements de la molette de la souris (sans parler des scroll
événements) dans jQuery?
javascript
jquery
mousewheel
thejh
la source
la source
$(el).on('input', ...
Réponses:
Il existe un plugin qui détecte la molette de la souris haut / bas et la vitesse sur une région.
la source
la source
DOMMouseScroll
événement est utilisé dans FF, vous devez donc écouter sur les deux.bind('DOMMouseScroll mousewheel') {
evetns developer.mozilla.org/en-US/docs/DOM/DOM_event_referencee.originalEvent.wheelDelta
n'est pas défini dans FF23Lié aux deux
mousewheel
et aDOMMouseScroll
fini par fonctionner très bien pour moi:Cette méthode fonctionne dans IE9 +, Chrome 33 et Firefox 27.
Edit - mars 2016
J'ai décidé de revenir sur cette question depuis un certain temps. La page MDN pour l'événement de défilement a un excellent moyen de récupérer la position de défilement qui l'utilise
requestAnimationFrame
, ce qui est hautement préférable à ma méthode de détection précédente. J'ai modifié leur code pour offrir une meilleure compatibilité en plus de la direction et de la position du défilement:Ce code fonctionne actuellement dans
Chrome v50, Firefox v44, Safari v9, and IE9+
Références:
la source
À partir de maintenant en 2017, vous pouvez simplement écrire
Fonctionne avec Firefox 51, Chrome 56, IE9 + actuels
la source
Les réponses évoquant l'événement "mousewheel" font référence à un événement obsolète. L'événement standard est simplement "roue". Voir https://developer.mozilla.org/en-US/docs/Web/Reference/Events/wheel
la source
wheel
événement est pris en charge surEdge
pas ceIE
qui est pas la même chose. CanIuseCela a fonctionné pour moi :)
de stackoverflow
la source
Voici une solution vanille. Peut être utilisé dans jQuery si l'événement passé à la fonction est
event.originalEvent
que jQuery rend disponible en tant que propriété de l'événement jQuery. Ou si à l'intérieur de lacallback
fonction sous nous ajoutons avant la première ligne:event = event.originalEvent;
.Ce code normalise la vitesse / quantité de la roue et est positif pour ce qui serait un défilement vers l'avant dans une souris typique, et négatif dans un mouvement de roue arrière de la souris.
Démo: http://jsfiddle.net/BXhzD/
Il existe également un plugin pour jQuery, qui est plus détaillé dans le code et un peu plus de sucre: https://github.com/brandonaaron/jquery-mousewheel
la source
Cela fonctionne dans les dernières versions de chaque IE, Firefox et Chrome.
la source
J'étais coincé dans ce problème aujourd'hui et j'ai trouvé que ce code fonctionnait bien pour moi
la source
utiliser ce code
la source
ma combinaison ressemble à ceci. il s'estompe et s'estompe à chaque défilement vers le bas / vers le haut. sinon, vous devez faire défiler jusqu'à l'en-tête, pour faire fondre l'en-tête.
celui ci-dessus n'est pas optimisé pour le tactile / mobile, je pense que celui-ci le fait mieux pour tous les mobiles:
la source
Le plugin que @DarinDimitrov a publié
jquery-mousewheel
, est cassé avec jQuery 3+ . Il serait plus judicieux d'utiliserjquery-wheel
ce qui fonctionne avec jQuery 3+.Si vous ne souhaitez pas utiliser la route jQuery, MDN met en garde contre l'utilisation de l'
mousewheel
événement car il n'est pas standard et n'est pas pris en charge dans de nombreux endroits. Il indique plutôt que vous devez utiliser l'wheel
événement car vous obtenez beaucoup plus de spécificité sur ce que signifient exactement les valeurs que vous obtenez. Il est pris en charge par la plupart des principaux navigateurs.la source
Si vous utilisez le plugin jquery mousewheel mentionné , que diriez-vous d'utiliser le 2ème argument de la fonction de gestionnaire d'événements -
delta
:la source
J'ai eu le même problème récemment où
$(window).mousewheel
revenaitundefined
Ce que j'ai fait était
$(window).on('mousewheel', function() {});
Pour le traiter, j'utilise:
la source