既没有鼠标也没有指针,悬停在屏幕上的元素的概念并不适用于触摸设备。由于许多网站依赖于JavaScript悬停事件导航或其他目的,一些触摸设备实现了mouseenter
只需一次敲击即可触发。如果事件处理程序也绑定到click
,则只会在元素的第二次敲击时引发。忽略触摸设备上的jQuery悬停(mouseenter,mouseleave)
由于jQuery的hover()
函数在内部使用mouseenter
和mouseleave
,既hover()
和click()
注册元件需要两个抽头以触发后者。对于很多用例,这正是你想要发生的事情。然而,在hover()
处理只会将重点(工具提示,发光等)添加到悬停元素的应用程序中,将所有事件一起跳过触摸设备可能更有意义,将处理器移至onclick
处理器。
我知道如何专门收听touchstart
和touchend
事件,使我可以定制触摸用户体验。这对我的问题是一个有效的解决方案,但我希望可以有一个“更容易”的方法来解决这个问题。我正在想象一种类似于hover()
的方法,它的签名只能以非触摸设备上附加的提供的事件处理程序的方式实现。
jQuery是否有这样的方法?任何插件?或者我在这里忽略了什么?
行为证实了iPad,iPhone和一些Android系统手机。
在台式机和触摸设备上运行此JsFiddle demo以查看我在说什么。
不知道为什么这是投票了,你不会放松悬停事件的设备上有两个选项? – Aaron 2013-06-30 17:37:31