创建支持触摸和单击的绑定
Posted
技术标签:
【中文标题】创建支持触摸和单击的绑定【英文标题】:Creating a bind that supports touch and click 【发布时间】:2013-02-12 01:32:57 【问题描述】:我正在寻找一个绑定,它可以为触摸设备绑定“touchstart”,为桌面设备绑定“click”。
在某些触摸设备上绑定“点击”会在处理点击之前有 500 毫秒的延迟。
使用“typeof window.ontouchstart”将触摸设备与桌面分离不再有效,因为主流浏览器现在支持触摸 (jQuery TouchClick),但鼠标点击不会模拟触摸事件。
jQuery Mobile 有这个功能,as suggested here,但是我正在寻找一个精简的 jQuery 插件来实现这个功能,而不使用 jQuery Mobile 框架。
【问题讨论】:
为什么不绑定两者,并在触摸监听器中设置一个标志,点击监听器可以检查并忽略如果为真? 【参考方案1】:如果两者都绑定,那么当触发触摸时,忽略后面的点击事件?
var ignoreClick = false;
function touchOrClick(e)
if (e.type == 'click')
if (ignoreClick)
ignoreClick = false;
return;
else
ignoreClick = true;
// do stuff
node.addEventListener('ontouchstart', touchOrClick, false);
node.addEventListener('onclick', touchOrClick, false);
【讨论】:
感谢您的回复。这可行,但我也在寻找更优雅的解决方案。【参考方案2】:如果您升级到最新版本的 jquery-touchclick,它现在支持两者。
【讨论】:
以上是关于创建支持触摸和单击的绑定的主要内容,如果未能解决你的问题,请参考以下文章