【问题标题】:Trigger mousewheel event with touch device使用触摸设备触发鼠标滚轮事件
【发布时间】:2017-06-22 14:58:39
【问题描述】:

我有一个绑定到鼠标滚轮的事件,我使用该事件进行一些计算,我希望能够使用相同的函数从触摸设备执行相同的计算。

我的代码是这样的:

$('#element').bind("mousewheel DOMMouseScroll", function(event) {
            event.preventDefault();
            if (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0)
                //do stuff
            else {
               //do other stuff
            }
        });

编辑:从评论中我了解到我并不完全清楚,我的目标是获得像“wheelDelta”这样的值,让我识别用户是否向上或向下滚动(触摸移动)

【问题讨论】:

  • 触摸设备没有mousewheel 事件。也许您应该尝试同时使用mousemovetouchmove
  • 你可以试试我的插件jquery-do-scroll。它适用于鼠标、触摸和滚轮事件。

标签: javascript jquery touch mousewheel


【解决方案1】:

这可能不是合适的解决方案,但您可以这样做。

  var lastScroll = 0;

  $('#element').on("scroll", function() {
    var st = $(this).scrollTop();
    if (st > lastScroll){
       // downscroll code
       //$(this).trigger("mousewheeldown");
    } else {
      // upscroll code
      //$(this).trigger("mousewheelup");
    }
    lastScroll = st;
    $(this).trigger("mousewheel");
  });

希望对你有帮助:)

【讨论】:

  • 他们为什么要这样做?
  • 他基本上可以检测一个用户生成的事件并手动触发另一个。根据我的理解,这基本上是他想要的。
  • 没有点击我的代码我不明白为什么我会尝试像你建议的那样
  • 好的。我猜你需要监听滚动事件而不是单击并触发鼠标滚轮而不是滚动。
  • 我需要知道滚动的方向
猜你喜欢
  • 2013-05-04
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-13
  • 2015-03-03
  • 2011-09-01
相关资源
最近更新 更多