JQuery 在 Chrome 和 FF 设备触摸仿真上触发了点击事件?

JQuery click event triggered on Chrome and FF device touch emulation?

在我的 Rails 站点中,我有一个元素,我想在用鼠标单击时(例如在桌面上)充当 link,但在触摸时则不会-屏幕设备(因为也有悬停行为)。

我的理解是 JQuery .click 事件不应在触摸时触发。

我用于设置点击处理程序的 coffeescript 很简单

...
    $(this).click ->
      location.href = url
...

(其中 "this" 是有问题的元素)

我知道此代码有效,因为单击操作适用于鼠标。为确保它不会在触摸设备上触发,我使用 Chrome 的开发人员工具中的设备模拟来模拟触摸。但是,当我这样做时,该方法仍然会触发并遵循 link。

这是 Chrome 仿真或我的代码的问题吗?我想知道它是否会在真正的触摸设备上表现得如此。

编辑:同样的事情发生在 Firefox 上,所以我认为这是我的代码...

我意识到触摸事件也会触发点击事件,在事件链的后面。为了获得我想要的功能,我保留了 .click 处理程序,但在我调用 event.preventDefault() 的地方添加了一个 .touchstart 处理程序以短路事件链的其余部分。这样,.click 处理程序会在鼠标单击时触发,但不会在触摸时触发。