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

使用jquery捕获窗口滚动条的MouseUp事件,jquery,scrollbar,Jquery,Scrollbar,我正试图找到一个解决方案来捕获整个窗口滚动条上的鼠标向上(滚动结束)事件。 但这段代码只能偶尔工作。我们将非常感谢您的帮助 <script type="text/javascript"> $(function() { var scrollTimer; var isMouseDown = false; $(window) .mousedown(function(event) {

我正试图找到一个解决方案来捕获整个窗口滚动条上的鼠标向上(滚动结束)事件。 但这段代码只能偶尔工作。我们将非常感谢您的帮助

<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>

$(函数(){
变量滚动定时器;
var isMouseDown=错误;
$(窗口)
.mousedown(函数(事件){
clearTimeout(滚动计时器);
isMouseDown=真;
})
.mouseup(函数(事件){
isMouseDown=错误;
})
.滚动(功能(事件){
clearTimeout(滚动计时器);
scrollTimer=setTimeout(函数(){
如果(!isMouseDown){
console.log('UP');
}
}, 500);
});
});

我想这就是你想要的:

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

$(document).bind("scrollstart", function() {
  alert("Scrolling started");
});
下面是我使用的jquery库的链接:

你很接近,你只需要做:

if (isMouseDown) // instead of !isMouseDown

由于我测试的浏览器在您离开滚动条时确实会收到mouseenter事件,所以我将mouseenter在滚动一次时绑定到mouseup事件。大概是这样的:

$(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;
        });
    }                   
});

这不一定完全正确,但完成了任务…

它仍然不起作用,必须有另一种方法来完成。当然,@ews2001的解决方案看起来很优雅。链接到这里是一个不错的插件。但如果鼠标按下并且没有滚动,它仍然会触发。问题是捕捉鼠标移动事件。在极少数情况下,您可能需要在滚动后添加自己的滚动效果,但只要用户“按住”滚动条,就不需要这样做。