用jQuery持续跟踪滚动

时间:2016-03-02 16:14:21

标签: javascript jquery

使用以下代码:

(function($){
    $(window).on('scroll', function(){
        var scroll_top = $(document).scrollTop();

        if (scroll_top > 50 && scroll_top < 100) {
            console.log(scroll_top);
        }
    });
})(jQuery)

查看控制台会显示50到50之间的数字范围。我按照预期向上和向下滚动100。

但是,我需要一种方法来记录50和50之间的每个数字。 100我正在滚动。因此,如果我在55停止,它将记录51,52,53,54,55。

据我所知,这是因为浏览器运行javascript并以不同的速度呈现页面,但它是否可能呢?

1 个答案:

答案 0 :(得分:0)

var scroll_pos_at_mousedown;
var aa = function(){

    $(window).on('scroll mouseup mousedown', function(e){
        var scroll_top = $(document).scrollTop();


        if(e.type == 'mousedown') {

            var scroll_top1 = $(document).scrollTop();
            if(scroll_top1 <= 50) {
                scroll_pos_at_mousedown = 50;
            } else if(scroll_top1 > 50 || scroll_top1 <= 500) {
                scroll_pos_at_mousedown = scroll_top1;
            } else {
                scroll_pos_at_mousedown = 500;
            }
            console.log("scroll_top is "+scroll_top1);
        }

        console.log("current_scroll_top is " + scroll_pos_at_mousedown);


        if (scroll_top > 50 && scroll_top < 500) {
            if(e.type == "mouseup") {
                var scroll_pos_at_mouseup = $(document).scrollTop();
                console.log('scroll_pos_at_mouseup is '+scroll_pos_at_mouseup);
                if(scroll_pos_at_mousedown<=500) {
                    for(i=scroll_pos_at_mousedown;i<=scroll_pos_at_mouseup;i++)
                        console.log(i);
                }else {
                    for(i=scroll_pos_at_mouseup;i<=500;i++)
                        console.log(i);
                }
            }


        }
    });
};aa();

我写过这个函数,记住事件mousedown和mouseup。您还可以添加keyup和keydown事件,并将其添加到向上和向下箭头keyCode。希望这会有所帮助:)