在iOS浏览器(demo)上执行之前,OnClick事件的超时时间约为400毫秒。对于所有具有onClick的DOM元素,我想将其更改为TouchStart事件。我该怎么做?

我使用jQuery,并尝试检查click函数的所有元素:

$('*').each(function() {
  if($(this).click != null) {
    // BUT all elements in DOM has click
  }
})

最佳答案

我没有确切的答案,但我认为您应该能够做到这一点。

为页面上具有OnClick的每个元素添加一个类-例如TouchTarget。然后在启动功能中使用它。

$('.TouchTarget').bind('touchstart', function (e) {
    e.preventDefault();
    touchStart(e, this);
});

创建一个如下所示的处理函数:
function touchStart(pEvent, pElement) {
//Do something with the touch.
}

如果您只想在触摸可用的情况下进行注册,则可以使用
if (Modernizr.touch) {
}

我相信OnClick延迟的原因是因为Safari正在等待查看触摸是否确实是单击,拖动或其他手势。这将很快识别出简单的触摸。我通常在需要快速触摸时将touchstart和touchend绑定(bind)在一起,以便touchstart提供视觉反馈,然后touchend可以通过“click”完成一些操作。此方法没有内置延迟。

10-08 16:37