$(this).bind('touchstart click', function(){ e.preventDefault(); //do your stuff here});6. 检查快速按键和点击CHOST从谷歌 7. 一般来说,你不想混了默认的触摸和非触摸(点击)API.a旦你进入触摸的世界更容易只与触摸相关的功能处理 。下面是伪代码,会做你想要它 。
如果你在的TouchMove事件连接和跟踪的位置,您可以添加在doTouchLogic功能更多的项目来检测手势和诸如此类的东西 。var touchStartTime;var touchStartLocation;var touchEndTime;var touchEndLocation;$thing.bind('touchstart'), funcion() { var d = new Date(); touchStartTime = d.getTime(); touchStartLocation = mouse.location(x,y);});$thing.bind('touchend'), funcion() { var d = new Date(); touchEndTime= d.getTime(); touchEndLocation= mouse.location(x,y); doTouchLogic();});function doTouchLogic() { var distance = touchEndLocation - touchStartLocation; var duration = touchEndTime - touchStartTime; if (duration 100ms && distance 10px) { // Person flicked their finger } if (duration > 100ms && distance > 10px) { // Person dragged their finger }}8. 另一个更好的维护 。
然而,该技术也将做event.stopPropagation() 。点击是没有抓到任何其他的点击为100ms 。
var clickObject = { flag: false, isAlreadyClicked: function () { var wasClicked = clickObject.flag; clickObject.flag = true; setTimeout(function () { clickObject.flag = false; }, 100); return wasClicked; }};$("#myButton").bind("click touchstart", function (event) { if (!clickObject.isAlreadyClicked()) {。}}9. 我写了一个jQuery插件,它提供了一个“touchclick”事件,你可以听 。
这需要避免被解雇两次都支持双方的点击和touchstart事件时,事件的照顾 。10. 只为目的,这里就是我的最快/最敏感的点击桌面/ TAP解决方案,我能想到的做: 我换成jQuery的on功能与修改一个,只要浏览器支持触摸事件,全部换成我的点击事件与touchstart 。
$.fn.extend({ _on: (function(){ return $.fn.on; })() });$.fn.extend({ on: (function(){ var isTouchSupported = 'ontouchstart' in window || window.DocumentTouch && document instanceof DocumentTouch; return function( types, selector, data, fn, one ) { if (typeof types == 'string' && isTouchSupported && !(types.match(/touch/gi))) types = types.replace(/click/gi, 'touchstart'); return this._on( types, selector, data, fn); }; }()),});用法比将有确切像以前一样:$('#my-button').on('click', function(){ /*。*/ });但touchstart时可用,点击时不会 。
需要的任何种类的任何延误:D 11. 我也工作在Android / iPad的Web应用程序,它看来,如果“会连续”,就足以“(无需touchstart) 。。
通过禁用touchstart,单击();从jQuery的 。它的实际工作还没有被touchstart超载 。
最后,您可以BINB生活 。(“touchstart”功能(E){e.stopPropagation();});要求touchstart事件停止传播,客厅点击()来获取触发 。
它的工作 12. 有很多事情试图解决这一问题时要考虑的 。大多数解决方案要么打破滚动或不办理鬼单击事件正常 。
对于一个完整的解决方案,请参阅 注意:你不能处理好鬼click事件每个基础 。延迟的点击是通过屏幕位置发射,所以如果你的触摸事件修改页面的方式,单击事件将被发送到该页面的新版本 。
13. 相反,你一个计数器:var count = 0;$thing.bind('touchstart click', function(){ count++; if (count %2 == 0) { //count 2% gives the remaining counts when devided by 2 // do something } return false});14. 它可以有效地分配给该事件'touchstart mousedown'或'touchend mouseup'以避免不希望的副作用click 。15. 考虑一个事实,即点击将始终遵循一个触摸事件的优势,这里是我做的,无需或全局标志摆脱“鬼点击”的 。
$('#buttonId').on('touchstart click', function(event){ if ($(this).data("already")) { $(this).data("already", false); return false; } else if (event.type == "touchstart") { $(this).data("already", true); } //your code here}); 。