gpt4 book ai didi

jquery - 如何绑定(bind) 'touchstart' 和 'click' 事件但不响应两者?

转载 作者:行者123 更新时间:2023-12-01 05:21:34 24 4
gpt4 key购买 nike

我正在开发一个必须在各种设备上运行的移动网站。目前最让我头疼的是黑莓。

我们需要支持键盘点击和触摸事件。

理想情况下我只使用:

$thing.click(function(){...})

但我们遇到的问题是,其中一些黑莓设备从触摸到触发点击之间存在非常烦人的延迟。

补救措施是使用 touchstart:

$thing.bind('touchstart', function(event){...})

但是我该如何绑定(bind)这两个事件,但只触发一个呢?我仍然需要键盘设备的点击事件,但是当然,如​​果我使用触摸设备,我不希望触发点击事件。

一个额外的问题:有没有办法做到这一点并另外适应甚至没有 touchstart 事件的浏览器?在研究中发现,BlackBerry OS5 似乎不支持 touchstart,因此还需要依赖该浏览器的点击事件。

附录:

也许一个更全面的问题是:

使用 jQuery,是否可以/建议使用相同的绑定(bind)来处理触摸交互和鼠标交互?

理想情况下,答案是肯定的。如果没有,我确实有一些选择:

  1. 我们使用 WURFL 获取设备信息,以便创建我们自己的设备矩阵。根据设备的不同,我们将使用 touchstart 或 click。

  2. 通过 JS 检测浏览器中的触摸支持(我需要对此进行更多研究,但似乎这是可行的)。

但是,这仍然留下一个问题:同时支持两者的设备又如何。我们支持的一些手机(即诺基亚和黑莓)同时具有触摸屏键盘。所以这让我回到了最初的问题...有没有办法以某种方式同时允许两者?

最佳答案

更新:查看 jQuery Pointer Events Polyfill项目允许您绑定(bind)到“指针”事件,而不是在鼠标和触摸之间进行选择。

<小时/>

绑定(bind)到两者,但创建一个标志,以便该函数仅每 100 毫秒左右触发一次。

var flag = false;
$thing.bind('touchstart click', function(){
if (!flag) {
flag = true;
setTimeout(function(){ flag = false; }, 100);
// do something
}

return false
});

关于jquery - 如何绑定(bind) 'touchstart' 和 'click' 事件但不响应两者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com