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]
获得未定义的原因。