如何检测触摸移动长度/偏移?

时间:2015-11-05 15:45:57

标签: javascript jquery jquery-mobile mobile touch

在开发人员工具中,我可以看到touchmove事件在执行手指移动时被多次触发*。

我正在寻找应该在其上执行touchmove div移动的解决方案 - 针对一个或两个轴的精确触摸移动像素数。

到目前为止我做了什么?

我试图将匿名函数绑定到div的{​​{1}}事件,期望匿名函数的touchmove参数会有类似{{1}的内容}& {em}移动e,因此我可以相应地更新offsetX的位置参数。

这样的事情:

offsetY

没有结果。

我该怎么办?

  

特别吸引力:我会赞成任何可行的解决方案,但是接受的答案将至少给我一个关于我应该在纯JavaScript中做什么的起点,而不是像jQuery mobile这样的抽象。

* 我实际上在Chrome开发工具中进行光标触摸模拟

2 个答案:

答案 0 :(得分:2)

我建议您查看这篇文章,该文章演示了" touchmove" event并获取jQuery中的偏移位置:http://www.devinrolsen.com/basic-jquery-touchmove-event-setup/

如果文章消失,这里是代码设置,其中包含根据文章中的事件计算的偏移量。

$('#someElm').bind('touchmove',function(e){
  e.preventDefault();
  var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0];
  var elm = $(this).offset();
  var x = touch.pageX - elm.left;
  var y = touch.pageY - elm.top;
});

希望这有助于在普通的javascript中找到解决方案。

答案 1 :(得分:0)

这是一个非jQuery解决方案。

addTocuchOffsets function(event) {
    var touch = event.touches[0] || event.changedTouches[0];
    var realTarget = document.elementFromPoint(touch.clientX, touch.clientY);
    event.offsetX = touch.clientX-realTarget.getBoundingClientRect().x;
    event.offsetY = touch.clientY-realTarget.getBoundingClientRect().y
    return event;
}