gpt4 book ai didi

javascript - JavaScript 中的 touchstart 不再返回 TouchList

转载 作者:行者123 更新时间:2023-11-29 17:18:12 30 4
gpt4 key购买 nike

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

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

但是,在 #test 上调用的以下代码在从 jQuery 运行时会为所有三个假设的数组返回 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 模拟器和物理 iDevices 上。

作为对上述内容的更新,使用 vanilla 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 ,并非原始 event 的每个属性都被复制到 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com