是否有一个等同于“touchstart”事件的e.PageX位置,因为有点击事件?
我试图用jQuery的touchstart事件来获得X位置,与live函数一起使用?
即
$('#box').live('touchstart', function(e) { var xPos = e.PageX; } );
现在,这确实与'点击'作为事件。 如何在地球上(不使用alpha的 jQuery Mobile)我得到一个触摸事件?
有任何想法吗?
谢谢你的帮助。
有点晚了,但你需要访问原来的事件,而不是jQuery的按摩。 而且,由于这些是多点触摸事件,所以需要做其他的改变:
$('#box').live('touchstart', function(e) { var xPos = e.originalEvent.touches[0].pageX; });
如果你想要其他手指,你可以在触摸列表的其他索引中find它们。
更新的JQUERY:
$(document).on('touchstart', '#box', function(e) { var xPos = e.originalEvent.touches[0].pageX; });
我为基于JQuery的项目使用这个简单的函数
var pointerEventToXY = function(e){ var out = {x:0, y:0}; if(e.type == 'touchstart' || e.type == 'touchmove' || e.type == 'touchend' || e.type == 'touchcancel'){ var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; out.x = touch.pageX; out.y = touch.pageY; } else if (e.type == 'mousedown' || e.type == 'mouseup' || e.type == 'mousemove' || e.type == 'mouseover'|| e.type=='mouseout' || e.type=='mouseenter' || e.type=='mouseleave') { out.x = e.pageX; out.y = e.pageY; } return out; };
例:
$('a').on('mousedown touchstart', function(e){ console.log(pointerEventToXY(e)); // will return obj ..kind of {x:20,y:40} })
希望这会对你有用;)
如果您不使用jQuery …您需要访问事件的TouchList
来获取具有pageX/Y
clientX/Y
等的Touch
对象
以下是相关文档的链接:
- https://developer.mozilla.org/en-US/docs/Web/Events/touchstart
- https://developer.mozilla.org/en-US/docs/Web/API/TouchList
- https://developer.mozilla.org/en-US/docs/Web/API/Touch
我在我的情况下使用e.targetTouches[0].pageX
。
我尝试了一些其他的答案,但originalEvent也是未定义的。 经过检查,find了一个TouchList分类的属性(如另一张海报所build议的),并设法通过这种方式到达pageX / Y:
var x = e.changedTouches[0].pageX;
检查Touch类上的 Safari 开发人员参考 。
据此,pageX / Y应该可用 – 也许你应该检查拼写? 确保它是pageX
而不是PageX