javascript - JavaScript 中的 touchstart 不再返回 TouchList

标签 javascript jquery jquery-events

我遇到了一个非常奇怪的问题。我将 touchstart 事件绑定(bind)到一个元素,并希望检索该事件的 X 和 Y 坐标。全部documentation online 表示这可以通过以下方式之一获得:

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

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

$('#test').bind('touchstart', function(e) {
    alert(e.targetTouches);
    alert(e.touches);
    alert(e.changedTouches);
});

您可以在此处查看演示> http://jsfiddle.net/c7UKV/1/ (您需要在移动设备上查看,或者您可以直接转到此处的结果 > http://jsfiddle.net/c7UKV/1/embedded/result/)。

我的问题是有人知道解决方法吗,或者 jQuery 是否以某种我不知道的方式规范化事件?我测试的所有 jQuery 版本(1.6+)以及 iOS 模拟器和物理 iDevice 上都存在此问题。

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

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

function checkCoords(e)
{
    alert(e.targetTouches);
    alert(e.touches);
    alert(e.changedTouches);
}

所以看来这是一个 jQuery 问题,而不是其他问题。你可以在这个jsFiddle中看到上面的工作正常。 .

最佳答案

described in the documentation ,并非原始事件的每个属性都被复制到 jQuery 的规范化事件对象。

您仍然可以使用originalEvent对象访问它:

$('#test').bind('touchstart', checkCoords );

function checkCoords(e){
  alert(e.originalEvent.targetTouches);
  alert(e.originalEvent.touches);
  alert(e.originalEvent.changedTouches);
}

关于javascript - JavaScript 中的 touchstart 不再返回 TouchList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14999724/

相关文章:

javascript - 在一维数组中查找时间序列数据的波峰和波谷 - Javascript

javascript - native 对象和宿主对象有什么区别?

javascript - 发布restful方法java错误

javascript - 视差滚动与 JQuery 动画绊倒

javascript - 检查单选按钮在 jQuery 模式对话框中无法正常工作

javascript - 如果没有鼠标移动如何重定向并显示当前计时器倒计时

javascript - 检索 JSON 数组元素值

javascript - Javascript 中的日期格式

javascript - 模糊不会在 p 标签上触发

jquery - 每当 Bootstrap 轮播自动循环时进行检测