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

时间:2015-01-23 19:18:45

标签: javascript jquery coffeescript click touch

在我的Rails网站中,我有一个元素,我希望在鼠标点击时(例如在桌面上)作为链接,但在触摸屏设备上触摸时不会(因为还有悬停行为) )。

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

我设置点击处理程序的coffeescript只是

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

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

我知道此代码有效,因为点击操作适用于鼠标。为确保不会在触控设备上触发,我会使用Chrome开发者工具中的设备模拟来模拟触控。但是,当我这样做时,该方法仍然会触发并跟随链接。

这是Chrome模拟或我的代码的问题吗?我想知道它是否会在真正的触摸设备上表现出来。

编辑:Firefox也是如此,所以我认为这是我的代码......

1 个答案:

答案 0 :(得分:0)

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