我已经将jQuery实时点击事件替换为jQuery移动点击事件来提高响应能力。jQuery mobile-对于每个现场点击事件应该有一个等效的点击事件?
我有一种感觉,这是一个坏主意兼容性的原因。
是否有必要同时具有这两个事件,并且有什么方法可以将它们写入同一个函数?
如(“点击”,“水龙头”)
我已经将jQuery实时点击事件替换为jQuery移动点击事件来提高响应能力。jQuery mobile-对于每个现场点击事件应该有一个等效的点击事件?
我有一种感觉,这是一个坏主意兼容性的原因。
是否有必要同时具有这两个事件,并且有什么方法可以将它们写入同一个函数?
如(“点击”,“水龙头”)
比利的答案令人难以置信地完整,实际上在我使用它的几次时效果很好。此外然而,你可能想看看在JQuery Mobile的VMOUSE插件,它是一个试图抽象的鼠标事件:
// This plugin is an experiment for abstracting away the touch and mouse
// events so that developers don't have to worry about which method of input
// the device their document is loaded on supports.
- https://github.com/jquery/jquery-mobile/blob/master/js/vmouse.js
我一直在玩这一个项目我正在努力工作,现在看起来非常敏感。要使用,像:
$('selector').bind('vclick', function() { ...
或
$('selector').bind('vmousedown', function() { ...
您可以在一个呼叫这样的绑定多个事件:
$('selector').bind('click tap',function(){ ... })
这可能会在某些浏览器/手机,不过,这是罚款可能会使某些触发点按操作的设备触发两次事件。
你可以做某种类型的设备/特征检测,并添加相应的处理程序只有这样解决这个问题...
$('selector').bind(myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... })
此外,我认为touchstart
和mousedown
更好的活动来选择。这是因为触摸之后,点击事件不会触发,直到延迟已经过去,因为系统允许第二次触摸的机会使其成为双击或成为轻扫手势等等。 touchstart
事件立即启动,因为mousedown
也应该更具响应性。
会的mousedown是为移动设备上的“抽头”作为回应?我宁愿使用一个事件并且避免为设备检测做一个功能,毕竟我的移动布局只依赖于分辨率 – TaylorMac 2011-06-04 09:20:57
我会做一个函数来检测它是否启用触摸,然后使用'touchstart'和'mousedown'。没有必要详细了解它是哪种设备。这可能是确保您获得跨平台响应速度最简单的方法。检测启用触摸的设备就像检查是否定义了“触摸”一样简单。所以像这样:'(typeof Touch!==“undefined”)? 'touchstart':'mousedown'' – 2011-06-04 11:09:17
“Touch”显然没有在所有移动设备上定义。例如,Android 2.3.4的浏览器。 – 2012-03-03 16:14:09
似乎jQuery的移动已经这不只是一个事件:
$(function(){
$('selector').bind('vclick', function(e){
alert('test');
return false;
});
});
我们开发了一个小的脚本来解决那个问题。只需将其包含在全局级别中,即可立即触发您的点击事件,而不会对延迟的事件造成任何问题。
好东西,谢谢! – Haroldo 2012-10-23 08:41:18
这对我所需要的非常适用。谢谢! – DropTheNerd 2013-02-07 16:52:02
您可以从jQuery的使用VMOUSE插件。这将解决点击事件延迟300ms(仅限移动设备)以及触发点击事件和触摸事件的情况。
要得到vmouse插件,请使用jQuery Mobile Download Builder。将它包括在jQuery之后,但在任何将取决于此插件的脚本之前。
相关事件vclick,基本使用方法如下:
$(".selector").on("vclick", function(event) {
// To execute
});
仅针对vmouse +1自定义构建!没有一个jQuery移动的风扇,但是这4KB精缩版本是重量轻,准确地工作,因为我需要的。 – abenrob 2014-06-25 04:29:02
注意,V单击也将捕获右键点击事件,所以你可能要检测开发过程中保持自己的理智:。对(“V单击”功能(E){警报(e.which)}); – user2449231 2014-06-25 18:47:12
Billy的答案很棒,但这种解决方案要容易得多。我已经整合了它。谢谢 – TaylorMac 2011-06-06 01:51:00
J.T.的回答是正确的做法。如果您执行了其他操作,请重新考虑。 – naugtur 2011-06-06 08:22:01
谢谢,这真的提高了我的应用程序的响应速度。 – Hendrik 2012-01-09 14:10:07