jQuery scroll() detect when user stops scrolling

前端 未结 13 1606
情歌与酒
情歌与酒 2020-11-22 02:17

Ok with this..

$(window).scroll(function()
{
    $(\'.slides_layover\').removeClass(\'showing_layover\');
    $(\'#slides_effect\').show();
});
13条回答
  •  余生分开走
    2020-11-22 02:40

    $(window).scroll(function() {
        clearTimeout($.data(this, 'scrollTimer'));
        $.data(this, 'scrollTimer', setTimeout(function() {
            // do something
            console.log("Haven't scrolled in 250ms!");
        }, 250));
    });
    

    Update

    I wrote an extension to enhance jQuery's default on-event-handler. It attaches an event handler function for one or more events to the selected elements and calls the handler function if the event was not triggered for a given interval. This is useful if you want to fire a callback only after a delay, like the resize event, or such.

    It is important to check the github-repo for updates!

    https://github.com/yckart/jquery.unevent.js

    ;(function ($) {
        var on = $.fn.on, timer;
        $.fn.on = function () {
            var args = Array.apply(null, arguments);
            var last = args[args.length - 1];
    
            if (isNaN(last) || (last === 1 && args.pop())) return on.apply(this, args);
    
            var delay = args.pop();
            var fn = args.pop();
    
            args.push(function () {
                var self = this, params = arguments;
                clearTimeout(timer);
                timer = setTimeout(function () {
                    fn.apply(self, params);
                }, delay);
            });
    
            return on.apply(this, args);
        };
    }(this.jQuery || this.Zepto));
    

    Use it like any other on or bind-event handler, except that you can pass an extra parameter as a last:

    $(window).on('scroll', function(e) {
        console.log(e.type + '-event was 250ms not triggered');
    }, 250);
    

    http://yckart.github.com/jquery.unevent.js/

    (this demo uses resize instead of scroll, but who cares?!)

提交回复
热议问题