Javascript 在';触摸移动';事件查看在垂直方向上拖动了多少像素
我正在将touchmove事件绑定到一个包含滑块图形的div,并且需要以某种方式计算用户上下拖动的像素数,这样我就可以调整滑块图形(我真的不想为此使用任何库,因为它是唯一实现此功能的地方) 所以我看起来像这样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
$('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);
});
});