Javascript 如何在iOS上将所有onClick事件更改为TouchStart?

Javascript 如何在iOS上将所有onClick事件更改为TouchStart?,javascript,ios,jquery,Javascript,Ios,Jquery,OnClick事件在iOS浏览器()上执行之前有一个约400毫秒的超时。我想为所有具有onClick的DOM元素将其更改为TouchStart事件。我怎样才能做到 我使用jQuery并尝试检查单击功能的所有元素: $('*').each(function() { if($(this).click != null) { // BUT all elements in DOM has click } }) 我没有一个确切的答案,但我认为你应该能够让它做你想做的 对于页面上具有OnC

OnClick事件在iOS浏览器()上执行之前有一个约400毫秒的超时。我想为所有具有onClick的DOM元素将其更改为TouchStart事件。我怎样才能做到

我使用jQuery并尝试检查单击功能的所有元素:

$('*').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.
}
如果您只想注册touch是否可用,那么可以使用

if (Modernizr.touch) {
}
我相信OnClick延迟的原因是因为Safari正在等待看触摸是否真的是点击、拖动或其他手势。这将快速识别简单的触摸。我通常在需要快速触摸时绑定touchstart和touchend,以便touchstart提供视觉反馈,然后touchend通过“单击”执行操作。此方法没有内置延迟。

请使用类似的产品或此处提供的代码片段: