jrobinsonc
2/5/2019 - 6:38 PM

jquery.handleScroll

jquery.handleScroll

jQuery HandleScroll Plugin

Usage

Pretty simple:

jQuery(function($) {
  $( window ).handleScroll(function() {
    // going up
  }, function() {
    // going down
  }, {
    debug: true // Defaults to false
  });
});
jQuery.fn.handleScroll = (upHandler, downHandler, options) => {
    options = options || {};
    options.debug = options.debug || false;

    /**
     * Window object.
     */
    const $Window = this;
    /**
     * States if the document is already loaded.
     */
    let isLoaded = false;

    jQuery(document).ready(() => {
        isLoaded = true;

        if (options.debug) {
            console.log("[handleScroll] Window loaded");
        }
    });

    let lastScrollTop = 0;

    $Window.on("scroll", () => {
        if (!isLoaded) {
            return;
        }

        const scrollTop = $Window.scrollTop();

        if (scrollTop > lastScrollTop) {
            if (options.debug) {
                console.log("[handleScroll] Window scrolling down");
            }

            downHandler();
        } else {
            if (options.debug) {
                console.log("[handleScroll] Window scrolling up");
            }

            upHandler();
        }

        lastScrollTop = scrollTop;
    });
};
"use strict";jQuery.fn.handleScroll=function(a,b,c){c=c||{},c.debug=c.debug||!1;var d,e=!1;jQuery(document).ready(function(){e=!0,c.debug&&console.log("[handleScroll] Window loaded")});var f=0;d.on("scroll",function(){if(e){var g=d.scrollTop();g>f?(c.debug&&console.log("[handleScroll] Window scrolling down"),b()):(c.debug&&console.log("[handleScroll] Window scrolling up"),a()),f=g}})};