使用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的解决方案看起来很优雅。链接到这里是一个不错的插件。但如果鼠标按下并且没有滚动,它仍然会触发。问题是捕捉鼠标移动事件。在极少数情况下,您可能需要在滚动后添加自己的滚动效果,但只要用户“按住”滚动条,就不需要这样做。