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,这也是未定义的。

谁能帮忙?

2 Solutions collect form web for “touchend事件属性”

实际上,释放的触摸将在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]获得未定义的原因。

  • 使用Chrome DevToolsdebuggingiOS 6 + 7 Mobile Safari
  • 检查在JavaScript中是否支持URLscheme
  • 禁用input文字颜色
  • 如何在AppleScript中检查,如果一个应用程序正在运行,而不启动它 - 通过osascript实用程序
  • 从用户select的文本中返回HTML
  • HTML5video标记在Safari,iPhone和iPad中不起作用
  • Safari浏览器中的date无效
  • 如何强制Mac OS在Chrome中打开“使用Googlesearch”
  • 以编程方式更改animation规则中的webkit转换值
  • Safari开发者工具:如何在导航时保留控制台日志?
  • 用JavaScript获取图像的真实宽度和高度? (在Safari / Chrome中)