【问题标题】:Detect mousewheel usage but keep the page scrolling (javascript/jquery)检测鼠标滚轮的使用但保持页面滚动(javascript/jquery)
【发布时间】:2013-08-28 10:52:49
【问题描述】:

我需要检测鼠标滚轮的使用情况,但是当我添加一个事件侦听器时,无论我如何摆弄它,它都会阻止整个页面滚动。我也尝试过使用 Brandon 的鼠标滚轮插件,但无济于事。我需要一些简单的东西,比如这个模型代码:

用户使用过鼠标滚轮: 布尔=真

如果布尔值==true: 执行代码,然后将 boolean 改回 false,直到下次使用鼠标滚轮。

我是新手,所以不要太过分了,谢谢。

【问题讨论】:

  • 你能发布你的小提琴吗?
  • 所以你希望当用户第一次使用滚动按钮时页面应该保持滚动。当他们再次使用它时,他们应该停止滚动吗?
  • 不,我希望在用户使用不干扰页面滚动的鼠标滚轮时触发某个动画。
  • 只是出于好奇...您在侦听器中使用 preventDefault 吗?

标签: javascript jquery scroll mousewheel


【解决方案1】:

我认为你需要这样的东西。请记住,这也将检测键盘滚动(向下键)。如果您只想检测滚动:

 $(window).scroll(function () {

        //scroll
 );

如果你想在上下滚动之间推迟:

  var lastScrollTop = 0;
     $(window).scroll(function () {
            var st = $(this).scrollTop();
            //downscroll      
            if (st > lastScrollTop){

            }
            //upscroll
            else{

            }
        lastScrollTop = st;

    );

对不起,我的答案不是你要找的。使用 Abdul Sy 的答案,而不是滚动,查看此绑定鼠标滚轮事件 - http://www.jquerysdk.com/api/event-mousewheel

【讨论】:

  • 不,我只需要鼠标滚轮动作。
【解决方案2】:

如果您的函数返回 false,则取决于 JavaScript 框架,滚动的默认行为可能会受到影响。

我建议只触发一个自定义事件来监听你的滚动。

类似这样的:

$(document).mousewheel(function(e){
   $(document).trigger('MyApp/ScollHappened', iCanPassValues); 
});

在您的应用中稍高一点,您可以在不干扰实际滚动事件的情况下执行计算。

$(document).on('MyApp/ScrollHappened', function(event, ...){
   //Doing my calculations
})

【讨论】:

  • 不会在任何滚动事件上触发,而不是明确的鼠标滚轮事件吗?
  • 你是对的;但这并没有改变底层的东西,将应用程序的行为放在自定义函数之外是件好事,这取决于返回的内容会改变页面的行为
  • 我把它放进去后页面仍然不滚动,.mousewheel 阻止它这样做。我们回到第一阶段:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多