Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “我如何检测?”;鼠标滚轮滚动“;及;窗口手动滚动;两者在Jquery中都不同_Javascript_Jquery_Html_Css_Scroll - Fatal编程技术网

Javascript “我如何检测?”;鼠标滚轮滚动“;及;窗口手动滚动;两者在Jquery中都不同

Javascript “我如何检测?”;鼠标滚轮滚动“;及;窗口手动滚动;两者在Jquery中都不同,javascript,jquery,html,css,scroll,Javascript,Jquery,Html,Css,Scroll,我正在做一个项目,当用户使用鼠标滚轮滚动和窗口滚动时,我想做一些动作(通过滚动右侧的滚动条) 我已经提出了一个解决方案,但它可以通过两种方式进行操作,即用户通过鼠标滚轮滚动和使用窗口上的滚动条手动滚动。 这是我检测鼠标滚轮和窗口滚动条的代码 $(window).scroll(function(event){ var st = $(this).scrollTop(); if (st > lastScrollTop){

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

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

您可以捕获
mouseweel
事件并防止其默认值,如果使用鼠标滚轮,则应防止
滚动
。然后处理另一种情况的
滚动
。请注意,不同的浏览器/操作系统/输入设备处理鼠标滚轮的方式非常不同。我想尝试将其正常化,但不是通过设备而是通过最大输入,所以YMMV

例如:

$(window).on("scroll", function(evt) {
  console.log("scroll NOT by mouse");
});

$(window).on("mousewheel", function(evt) {
  console.log("scroll by mouse");
  evt.preventDefault();
});
您可以使用它来检测鼠标滚轮的移动。以下是如何将其与jQuery(从文档复制的代码)一起使用:

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

$('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){
    //...
});

请参考问题我在问题中做了一些更改,并解释了我希望如何解决问题。请参考问题我在问题中做了一些更改,并解释了我希望如何解决问题。不幸的是,我们并不总能得到我们想要的。在
scroll
处理程序中,您无法一次区分这两个事件,因此需要在scrollwheel事件成为滚动事件之前处理它。
$(window).scroll(function(e){
    //...
});