touchend事件属性

如果我通过移动设备捕捉所有触发事件:

$(document.body).bind('touchend', function (e) { var touch = e.touches[0]; // doesnt work ... 

我需要从e参数中获取touch.screenX,touch.screenY,touch.clientX和touch.clientX。 我见过的所有例子都表明,e.touches将是一个集合,你可以通过e.touches[0]获得触摸细节。 在我的ipadtesting中, e.touches总是未定义的。 我没有使用任何jQuery插件。

还试过e.targetTouches,这也是未定义的。

谁能帮忙?

实际上,释放的触摸将在changedTouches数组中find,即:

e.changedTouches[0].pageX // get the end x page coordinate for a released touch

我认为这比通过原始的Event属性稍微可靠。

你可以在这里阅读更多关于changedTouches: http : //www.w3.org/TR/touch-events/#changedtouches-of-a-touchevent

touches属性是一个TouchList对象。 你可以在这里看到TouchList类的引用。

如果您使用#log div上的此示例代码监视其长度属性:

 $('#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/>'); }); 

执行touchstart和touchmove的时候会得到1,执行touchend的时候会得到0。 这就是为什么你从e.touches[0]获得未定义的原因。