Mat*_*rts 48 javascript jquery mobile-safari touch touch-event
如果我通过移动设备捕获所有touchend事件:
$(document.body).bind('touchend', function (e) {
var touch = e.touches[0]; // doesnt work
...
Run Code Online (Sandbox Code Playgroud)
我需要从e参数中获取touch.screenX,touch.screenY,touch.clientX和touch.clientX.我见过的所有例子都表明e.touches将是一个集合,你可以通过触摸细节获得e.touches[0].在我对ipad的测试中,e.touches总是未定义的.我没有使用任何jquery插件.
还尝试了e.targetTouches,这也是未定义的.
有人可以帮忙吗?
Gop*_*han 98
实际上,已发布的触摸将在changedTouches数组中找到,即:
e.changedTouches[0].pageX // get the end x page coordinate for a released touch
我认为这比通过originalEvent属性稍微可靠一点.
您可以在此处阅读更多有关changedTouches的信息:http: //www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent
小智 10
touches属性是一个TouchList对象.您可以在此处查看TouchList类引用.
如果使用#log div上的示例代码监视其length属性:
$('#element').bind('touchstart', function(event)
{
$('#log').append(event.originalEvent.touches.length+'<br/>');
});
$('#element').bind('touchmove', function(event)
{
$('#log').append(event.originalEvent.touches.length+'<br/>');
});
$('#element').bind('touchend', function(event)
{
$('#log').append(event.originalEvent.touches.length+'<br/>');
});
Run Code Online (Sandbox Code Playgroud)
执行touchstart和touchmove时,你将获得1,执行touchend时获得0.这就是你从中获取undefined的原因e.touches[0].