javascript - 如何在 Jquery 中以不同方式检测 "Mouse wheel scroll"和 "Window manual scroll"

标签 javascript jquery html css scroll

我正在做一个元素,当用户使用鼠标滚轮滚动和窗口滚动(通过滚动右侧的滚动条)时,我想做一些 Action
我想出了一个解决方案,但它以两种方式执行操作,即当用户通过鼠标滚轮滚动和通过使用窗口上的滚动条手动滚动时。
这是我检测鼠标滚轮和窗口滚动条的代码

$(window).scroll(function(event){
        var st = $(this).scrollTop();
            if (st > lastScrollTop){
                $( "#gear1" ).css( "-webkit-transform", "rotate(" + (r + 10) + "deg)" );
                r = r + 10;

            } else {

                $( "#gear1" ).css( "-webkit-transform", "rotate(" + (r - 10) + "deg)" );
                r = r - 10;
            }
          lastScroll = st;
});


当用户滚动鼠标滚轮 和用户滚动窗口滚动条 时,我想执行不同的操作。



我需要这样的东西:

If (scroll type is Mouse wheel ){
   // Do some action
}

If (scroll type is Window scroll (Scrolling by Scrollbar on right side of browser window) ){
   // Do some action
}

最佳答案

你可以使用这个 library检测鼠标滚轮的移动。以下是如何将它与 jQuery 一起使用(代码从文档中复制):

$('#my_elem').on('mousewheel', function(event) {
   //...
});

或者,您可以在不使用任何库的情况下使用以下代码:

$('body,html').bind('scroll mousedown wheel DOMMouseScroll mousewheel keyup', function(e){
 if ( e.which > 0 || e.type == "mousedown" || e.type == "mousewheel"){
    //...
 }
})

如果您使用第二个选项,则检测没有鼠标滚轮的滚动的代码将是:

$(window).scroll(function(e){
    //...
});

关于javascript - 如何在 Jquery 中以不同方式检测 "Mouse wheel scroll"和 "Window manual scroll",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30182877/

相关文章:

JavaScript 自动加载器?

javascript - 如何通过sencha touch中的Listeners函数调用另一个 View

javascript - 将 .Net 控制值传递给 JavaScript 函数

html - 将 overflow-x 应用于 CSS grid-column 元素似乎也适用 overflow-y

javascript - 在 HTML mailto 上添加预定义的发件人电子邮件地址

javascript - 值控制的颜色不透明度

javascript - Selenium 无法使用 headless 浏览器单击元素,但相同的代码可以在 UI 浏览器上正常工作

javascript - UWP JavaScript 应用程序 : run win32 EXE with parameters

javascript - 如何使用 jQuery 创建文本节点?

jquery - 定位jquery.datepicker