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
处理程序会在鼠标单击时触发,但不会在触摸时触发。
在我的 Rails 站点中,我有一个元素,我想在用鼠标单击时(例如在桌面上)充当 link,但在触摸时则不会-屏幕设备(因为也有悬停行为)。
我的理解是 JQuery .click 事件不应在触摸时触发。
我用于设置点击处理程序的 coffeescript 很简单
...
$(this).click ->
location.href = url
...
(其中 "this" 是有问题的元素)
我知道此代码有效,因为单击操作适用于鼠标。为确保它不会在触摸设备上触发,我使用 Chrome 的开发人员工具中的设备模拟来模拟触摸。但是,当我这样做时,该方法仍然会触发并遵循 link。
这是 Chrome 仿真或我的代码的问题吗?我想知道它是否会在真正的触摸设备上表现得如此。
编辑:同样的事情发生在 Firefox 上,所以我认为这是我的代码...
我意识到触摸事件也会触发点击事件,在事件链的后面。为了获得我想要的功能,我保留了 .click
处理程序,但在我调用 event.preventDefault()
的地方添加了一个 .touchstart
处理程序以短路事件链的其余部分。这样,.click
处理程序会在鼠标单击时触发,但不会在触摸时触发。