我们有一个棘手的情况,我们使用jquery来防止链接在触摸开始时触发以模拟在移动设备上悬停。问题是使用e.preventDefault()
不仅会阻止触摸事件将我们带到链接,还会阻止mouseleave事件触发另一个div。我在
http://codepen.io/jg314/pen/DjIJe/
显示我正在谈论的内容。触摸第一个块时,鼠标悬停事件将触发。然后,当您触摸第二个框时,将触发mouseleave事件。但是,如果您触摸第一个框,然后触摸第三个框,则mouseleave事件不会触发,这会导致整个网站出现问题。
有什么建议吗?我们尝试了各种各样的东西,似乎无法阻止链接点击,同时允许鼠标事件触发。
答案 0 :(得分:1)
处理touchend
事件而不是touchstart
事件允许在另一个元素上触发mouseleave
事件的事件正确冒泡,同时防止链接在触控装置。我已更新示例以反映此更改:http://codepen.io/anon/pen/IqAEG
答案 1 :(得分:0)
设置一个或多个用于不同状态的变量。例如。一个名为currentlyDraggingObject
或disableAllButtons
的布尔值。然后,不要使用e.preventDefault()
禁用,而是让该函数检查您已设置的状态变量并相应地继续(或不继续)。