Comment détecter le sens de défilement de
Je veux exécuter une fonction lorsque quelqu'un fait défiler sur un élément. Quelque chose comme ceci:
$('div').scrollDown(function(){ alert('down') });
$('div').scrollUp(function(){ alert('up') });
Mais ces fonctions n'existent pas. Est-il une solution à ce problème? Ils semblent être en mesure de le faire. Malheureusement, le code source est compressé, donc pas de chance là...
Merci!!
- N'est-il pas le faire? api.jquery.com/scroll
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à le comprendre à la fin, donc si quelqu'un est à la recherche de la réponse:
e.wheelDelta
, pase.delta
...e.wheelDelta
, nie.delta
, maise.originalEvent.wheelDelta
delta
:$('#el').on('mousewheel', function(e, delta) { if(delta > 0) { /*up*/ } else { /*down*/ }})
. Voir cette réponse.Exemple suivant sera à l'écoute de défilement de la SOURIS, pas de tactile, ni de pavé tactile défilement.
Il utilise jQuery.sur() (Comme de jQuery 1.7, l' .sur() la méthode est la méthode préférée pour la fixation des gestionnaires d'événements dans un document).
Fonctionne sur tous les navigateurs.
violon: http://jsfiddle.net/honk1/gWnNv/7/
Cela mérite une mise à jour - aujourd'hui, nous avons la
wheel
événement :JS:
CSS:
HTML:
De soutien a été très bon sur les navigateurs modernes pour un bon moment déjà :
https://developer.mozilla.org/en-US/docs/Web/Events/wheel
Si profonds de la prise en charge du navigateur est nécessaire, sans doute mieux d'utiliser mousewheel.js au lieu de vous embêter :
https://plugins.jquery.com/mousewheel/
JS:
CSS:
HTML:
Solution Existante
Il pourrait être la 3 solution de cette annonce et d'autres stackoverflow article.
la Solution 1
la Solution 2
la Solution 3
Multi Test Du Navigateur
je ne pouvais pas testé sur Safari
chrome 42 (Win 7)
Firefox 37 (Win 7)
IE 11 (Win 8)
IE 10 (Win 7)
IE 9 (Win 7)
IE 8 (Win 7)
Solution Combinée
De la multi navigateur de test, j'ai décidé d'utiliser la Solution 3 pour les navigateurs les plus courants et la Solution 1 pour firefox et IE 11.
J'ai évoqué cette réponse pour détecter IE 11.
Démo: http://jsfiddle.net/AlienWebguy/Bka6F/
Voici un échantillon montrant un moyen facile de le faire. Le script est:
La
#container
est votre divid
. Le#target
est juste pour voir ce qu'il fonctionne. Modifier ce que vous voulez quand ou quand la bas.MODIFIER
L'OP n'a pas dit avant, mais depuis qu'il est à l'aide d'un div avec
overflow: hidden
, le défilement ne se produit pas, le script pour détecter le défilement est la moindre des choses. Eh bien, comment détecter quelque chose qui ne se produit pas?!Donc, l'OP lui-même posté le lien avec ce qu'il veut, alors pourquoi ne pas utiliser cette bibliothèque? http://cdn.jquerytools.org/1.2.5/full/jquery.tools.min.js.
L'appel est juste:
Vous pouvez utiliser ce plugin simple pour ajouter
scrollUp
etscrollDown
à votre jQueryhttps://github.com/phpust/JQueryScrollDetector