2011-06-04 65 views

回答

31

比利的答案令人难以置信地完整,实际上在我使用它的几次时效果很好。此外然而,你可能想看看在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() { ... 
+0

Billy的答案很棒,但这种解决方案要容易得多。我已经整合了它。谢谢 – TaylorMac 2011-06-06 01:51:00

+1

J.T.的回答是正确的做法。如果您执行了其他操作,请重新考虑。 – naugtur 2011-06-06 08:22:01

+0

谢谢,这真的提高了我的应用程序的响应速度。 – Hendrik 2012-01-09 14:10:07

27

您可以在一个呼叫这样的绑定多个事件:

$('selector').bind('click tap',function(){ ... }) 

这可能会在某些浏览器/手机,不过,这是罚款可能会使某些触发点按操作的设备触发两次事件。

你可以做某种类型的设备/特征检测,并添加相应的处理程序只有这样解决这个问题...

$('selector').bind(myCustomDetectionFunction() ? 'click' : 'tap' ,function(){ ... }) 

此外,我认为touchstartmousedown更好的活动来选择。这是因为触摸之后,点击事件不会触发,直到延迟已经过去,因为系统允许第二次触摸的机会使其成为双击或成为轻扫手势等等。 touchstart事件立即启动,因为mousedown也应该更具响应性。

+0

会的mousedown是为移动设备上的“抽头”作为回应?我宁愿使用一个事件并且避免为设备检测做一个功能,毕竟我的移动布局只依赖于分辨率 – TaylorMac 2011-06-04 09:20:57

+0

我会做一个函数来检测它是否启用触摸,然后使用'touchstart'和'mousedown'。没有必要详细了解它是哪种设备。这可能是确保您获得跨平台响应速度最简单的方法。检测启用触摸的设备就像检查是否定义了“触摸”一样简单。所以像这样:'(typeof Touch!==“undefined”)? 'touchstart':'mousedown'' – 2011-06-04 11:09:17

+0

“Touch”显然没有在所有移动设备上定义。例如,Android 2.3.4的浏览器。 – 2012-03-03 16:14:09

4

似乎jQuery的移动已经这不只是一个事件:

$(function(){ 
    $('selector').bind('vclick', function(e){ 
     alert('test');  
     return false; 
    }); 
}); 
10

我们开发了一个小的脚本来解决那个问题。只需将其包含在全局级别中,即可立即触发您的点击事件,而不会对延迟的事件造成任何问题。

https://github.com/cargomedia/jquery.touchToClick

+0

好东西,谢谢! – Haroldo 2012-10-23 08:41:18

+0

这对我所需要的非常适用。谢谢! – DropTheNerd 2013-02-07 16:52:02

1

您可以从jQuery的使用VMOUSE插件。这将解决点击事件延迟300ms(仅限移动设备)以及触发点击事件和触摸事件的情况。

要得到vmouse插件,请使用jQuery Mobile Download Builder。将它包括在jQuery之后,但在任何将取决于此插件的脚本之前。

相关事件vclick,基本使用方法如下:

$(".selector").on("vclick", function(event) { 
    // To execute 
}); 
+0

仅针对vmouse +1自定义构建!没有一个jQuery移动的风扇,但是这4KB精缩版本是重量轻,准确地工作,因为我需要的。 – abenrob 2014-06-25 04:29:02

+0

注意,V单击也将捕获右键点击事件,所以你可能要检测开发过程中保持自己的理智:。对(“V单击”功能(E){警报(e.which)}); – user2449231 2014-06-25 18:47:12