【问题标题】: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 框架。

【问题讨论】:

  • 为什么不绑定两者,并在触摸监听器中设置一个标志,点击监听器可以检查并忽略如果为真?

标签: javascript jquery mobile touch desktop


【解决方案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,它现在支持两者。

【讨论】:

    猜你喜欢
    • 2022-12-29
    • 2021-07-06
    • 2023-03-19
    • 2015-03-06
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多