在我的Rails网站中,我有一个元素,我希望在鼠标点击时(例如在桌面上)作为链接,但在触摸屏设备上触摸时不会(因为还有悬停行为) )。
我的理解是,触摸时不应触发JQuery .click事件。
我设置点击处理程序的coffeescript只是
...
$(this).click ->
location.href = url
...
(其中“this”是有问题的元素)
我知道此代码有效,因为点击操作适用于鼠标。为确保不会在触控设备上触发,我会使用Chrome开发者工具中的设备模拟来模拟触控。但是,当我这样做时,该方法仍然会触发并跟随链接。
这是Chrome模拟或我的代码的问题吗?我想知道它是否会在真正的触摸设备上表现出来。
编辑:Firefox也是如此,所以我认为这是我的代码......
答案 0 :(得分:0)
我意识到触摸事件也会触发点击事件,稍后会在事件链中触发。为了获得我想要的功能,我保留了.click
处理程序,但添加了.touchstart
处理程序,我在其中调用event.preventDefault()
来短路事件链的其余部分。这样,.click
处理程序会触发鼠标单击,但不触发触摸。