Ok avec ça ...
$(window).scroll(function()
{
$('.slides_layover').removeClass('showing_layover');
$('#slides_effect').show();
});
Je peux dire quand quelqu'un fait défiler ce que je comprends. Donc, avec cela, j'essaie de comprendre comment attraper quand quelqu'un s'est arrêté. Dans l'exemple ci-dessus, vous pouvez voir que je supprime une classe d'un ensemble d'éléments pendant le défilement. Cependant, je souhaite réactiver cette classe lorsque l'utilisateur arrête de défiler.
La raison en est que j'ai l'intention d'avoir une émission en escale pendant que la page défile pour donner à la page un effet spécial sur lequel j'essaie de travailler. Mais la classe que j'essaie de supprimer lors du défilement entre en conflit avec cet effet, car c'est un effet de transparence pour une certaine nature.
Réponses:
Mettre à jour
J'ai écrit une extension pour améliorer le
on
-event-handler par défaut de jQuery . Il attache une fonction de gestionnaire d'événements pour un ou plusieurs événements aux éléments sélectionnés et appelle la fonction de gestionnaire si l'événement n'a pas été déclenché pendant un intervalle donné. Ceci est utile si vous souhaitez déclencher un rappel uniquement après un délai, comme l'événement de redimensionnement, ou autre.Il est important de vérifier le github-repo pour les mises à jour!
https://github.com/yckart/jquery.unevent.js
Utilisez-le comme n'importe quel autre gestionnaire
on
oubind
-event, sauf que vous pouvez passer un paramètre supplémentaire en dernier:http://yckart.github.com/jquery.unevent.js/
(cette démo utilise à la
resize
place descroll
, mais qui s'en soucie?!)la source
Utilisation de jQuery throttle / debounce
jQuery debounce est un bon pour des problèmes comme celui-ci. jsFidlle
Le deuxième paramètre est le drapeau "at_begin". Ici, j'ai montré comment exécuter du code à la fois au «début du défilement» et à la «fin du défilement».
Utiliser Lodash
Comme suggéré par Barry P, jsFiddle , underscore ou lodash ont également un anti -rebond, chacun avec des apis légèrement différents.
la source
leading
ettrailing
vous - même, puis assurez-vous qu'il ne peut y avoir aucune confusion.Rob W m'a suggéré de consulter un autre article ici sur la pile qui était essentiellement un article similaire à mon article d'origine. Quelle lecture à travers cela j'ai trouvé un lien vers un site:
http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
Cela a en fait aidé à résoudre mon problème très bien après quelques ajustements pour mes propres besoins, mais dans l'ensemble, cela a aidé à éliminer beaucoup de bouffées de chaleur et m'a sauvé environ 4 heures de le résoudre par moi-même.
Vu que cet article semble avoir du mérite, j'ai pensé que je reviendrais et fournirais le code trouvé à l'origine sur le lien mentionné, juste au cas où l'auteur déciderait d'aller dans une direction différente avec le site et finirait par supprimer le lien.
la source
Je suis d'accord avec certains des commentaires ci-dessus que l'écoute pendant un délai d'attente n'était pas assez précise car cela se déclenchera lorsque vous arrêterez de déplacer la barre de défilement assez longtemps au lieu de lorsque vous arrêtez de défiler. Je pense qu'une meilleure solution est d'écouter l'utilisateur qui lâche la souris (mouseup) dès qu'il commence à faire défiler:
et un exemple de son fonctionnement peut être vu dans ce JSFiddle
la source
Vous pouvez définir un intervalle qui s'exécute toutes les 500 ms environ, dans le sens de ce qui suit:
Je n'ai pas testé ce code, mais le principe devrait fonctionner.
la source
Version très petite avec capacité de début et de fin
la source
Ok c'est quelque chose que j'ai déjà utilisé. Fondamentalement, vous regardez une prise de référence jusqu'au dernier
scrollTop()
. Une fois votre délai écoulé, vous vérifiez le courantscrollTop()
et s'ils sont les mêmes, vous avez terminé le défilement.la source
Le style ES6 avec contrôle du défilement démarre également.
Usage:
la source
Veuillez vérifier l' événement jquery mobile scrollstop
la source
Pour ceux qui en ont encore besoin, voici la solution
la source
Cela devrait fonctionner:
la source
Voici comment vous pouvez gérer cela:
la source
Cela détecte l'arrêt de défilement après 1 milliseconde (ou le change) à l'aide d'une minuterie globale:
la source