在开发人员工具中,我可以看到touchmove
事件在执行手指移动时被多次触发*。
我正在寻找应该在其上执行touchmove div
移动的解决方案 - 针对一个或两个轴的精确触摸移动像素数。
我试图将匿名函数绑定到div
的{{1}}事件,期望匿名函数的touchmove
参数会有类似{{1}的内容}& {em}移动e
,因此我可以相应地更新offsetX
的位置参数。
这样的事情:
offsetY
没有结果。
我该怎么办?
特别吸引力:我会赞成任何可行的解决方案,但是接受的答案将至少给我一个关于我应该在纯JavaScript中做什么的起点,而不是像jQuery mobile这样的抽象。
* 我实际上在Chrome开发工具中进行光标触摸模拟
答案 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;
}