相关疑难解决方法(0)

JavaScript中的touchstart不再返回TouchList

我遇到了一个非常奇怪的问题.我将touchstart事件绑定到一个元素,并希望检索事件的X和Y坐标.所有在线文档都表明可以通过以下方式之一获得:

  • e.touches
  • e.targetTouches
  • e.changedTouches

但是,以下代码在从jQuery运行时调用所有三个假定数组的#test返回undefined:

$('#test').bind('touchstart', function(e) {
    alert(e.targetTouches);
    alert(e.touches);
    alert(e.changedTouches);
});
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到一个演示> http://jsfiddle.net/c7UKV/1/(你需要在移动设备上查看它,或者你可以直接到这里的结果> http://jsfiddle.net/c7UKV/ 1/embedded/result /).

我的问题是有没有人知道一个解决方案,或者是jQuery以某种我不知道的方式规范事件?我测试的所有版本的jQuery(1.6+)以及iOS模拟器和物理iDevices都存在这个问题.

作为对上述内容的更新,使用vanilla JavaScript(而不是jQuery)调用它会返回正确的结果.例如,以下代码可以正常运行:

document.getElementById('test').addEventListener('touchstart', checkCoords, false);

function checkCoords(e)
{
    alert(e.targetTouches);
    alert(e.touches);
    alert(e.changedTouches);
}
Run Code Online (Sandbox Code Playgroud)

所以看起来这是一个jQuery问题,而不是其他任何问题.您可以在此jsFiddle中看到上述正常工作.

javascript jquery javascript-events

2
推荐指数
1
解决办法
1706
查看次数

标签 统计

javascript ×1

javascript-events ×1

jquery ×1