使用jquery捕获窗口滚动条的MouseUp事件

时间:2012-08-17 17:21:39

标签: jquery scrollbar

我正在尝试在整个窗口滚动条上找到捕获鼠标(滚动结束)事件的解决方案。 但这段代码只是零星的。任何帮助将受到高度赞赏。

<script type="text/javascript">
    $(function() {
        var scrollTimer;
        var isMouseDown = false;

        $(window)
            .mousedown(function(event) {
                clearTimeout(scrollTimer);
                isMouseDown = true;
            })
            .mouseup(function(event) {
                isMouseDown = false;
            })
            .scroll(function (event) {
                clearTimeout(scrollTimer);
                scrollTimer = setTimeout(function() {
                    if (! isMouseDown) {
                        console.log('UP');
                    }
                }, 500);
            });
    });
</script>

3 个答案:

答案 0 :(得分:2)

我认为这就是你所追求的:

$(document).bind("scrollstop", function() {
   alert("Scrolling has stopped");
});

$(document).bind("scrollstart", function() {
  alert("Scrolling started");
});

这是我使用的jquery库的链接:

http://james.padolsey.com/demos/scrollevents/scroll-startstop.events.jquery.js

答案 1 :(得分:0)

http://jsfiddle.net/kyyn8/5/

你很亲密,你只需要这样做:

if (isMouseDown) // instead of !isMouseDown

答案 2 :(得分:0)

由于我测试的浏览器在您离开滚动条后立即收到了鼠标中心事件,因此在滚动鼠标时,将鼠标中心绑定到鼠标事件。像这样的东西:

$(window).on('mousedown.ss',function(ev) { 
    $.ssMouseDown=true;
});
$(window).on('mouseup.ss',function(ev) { 
    $.ssMouseDown=false;
});
$(window).on('scroll.ss',function(ev) { 
    if ($.ssMouseDown) {
        $(window).off('mouseenter.ss');
        $(window).one('mouseenter.ss',function(ev) { 
            $.ssMouseDown=false;
        });
    }                   
});

这不一定完全正确,但做了工作......