Javascript 在';触摸移动';事件查看在垂直方向上拖动了多少像素

Javascript 在';触摸移动';事件查看在垂直方向上拖动了多少像素,javascript,jquery,touch,Javascript,Jquery,Touch,我正在将touchmove事件绑定到一个包含滑块图形的div,并且需要以某种方式计算用户上下拖动的像素数,这样我就可以调整滑块图形(我真的不想为此使用任何库,因为它是唯一实现此功能的地方) 所以我看起来像这样 $('div').bind('touchmove', function(e) { e.preventDefault(); // See direction where users drag. var pix = //how many pixels draged up or d

我正在将touchmove事件绑定到一个包含滑块图形的div,并且需要以某种方式计算用户上下拖动的像素数,这样我就可以调整滑块图形(我真的不想为此使用任何库,因为它是唯一实现此功能的地方)

所以我看起来像这样

$('div').bind('touchmove', function(e) {
  e.preventDefault();

  // See direction where users drag.
  var pix = //how many pixels draged up or down
});
这只适用于一次触摸

它的工作原理是获得初始触摸位置,然后在移动手指时使用该位置获得偏移

在这里,您必须小心使用事件侦听器,否则最终会导致大量事件侦听器和内存泄漏,因此不要忘记在触摸结束时解除touchmove事件的绑定


让我知道如果你需要任何帮助了解这一点

我知道您在这里做什么,但由于某些原因,我在以下行中收到错误:“无法读取未定义的属性“0”:var touchtstart=e.touchs[0]。pageY;真奇怪。有时触摸事件没有初始化,因此您必须进入移动模式。可能值得在事件侦听器中粘贴一个
控制台。log(e)
,这样你就可以看到事件中的属性。真的想不出这个,设置一个js fidle在ipad上访问它,但没有看到成功警报:/jQuery正在处理你的事件<代码>e.originalEvent.touch…,或者只使用本机事件(addEventListener、removeEventListener)。
$('div').on('touchstart', function(e) {
    var touchStart = e.touches[0].clientY;
    var touchDistance = 0;

    function touchMove(e) {
        touchDistance = e.touches[0].clientY - touchStart;
    }
    $(this).on('touchmove', touchMove).one('touchend', function() {
        $(this).off('touchmove', touchMove);
    });
});