独立的jQuery“触摸”方法?

因此,我正在寻求实现我编写的插件的能力,以便从具有触摸function的互联网设备(如iPhone,iPad或Android)中读取触摸“轻扫”。

那里有什么吗? 我不是在寻找像jQtouch一样完整的东西,尽管正在考虑逆向工程我需要的代码。

有关最佳方法的任何建议吗? 一段代码已经可用?

附录:事后我意识到解决方案不会严格来说是jQuery,因为我很确定没有任何内置方法来处理这个问题。 我希望标准的Javascript能够在答案中找到答案。

(function($) { $.fn.swipe = function(options) { // Default thresholds & swipe functions var defaults = { threshold: { x: 30, y: 10 }, swipeLeft: function() { alert('swiped left') }, swipeRight: function() { alert('swiped right') }, preventDefaultEvents: true }; var options = $.extend(defaults, options); if (!this) return false; return this.each(function() { var me = $(this) // Private variables for each element var originalCoord = { x: 0, y: 0 } var finalCoord = { x: 0, y: 0 } // Screen touched, store the original coordinate function touchStart(event) { console.log('Starting swipe gesture...') originalCoord.x = event.targetTouches[0].pageX originalCoord.y = event.targetTouches[0].pageY } // Store coordinates as finger is swiping function touchMove(event) { if (defaults.preventDefaultEvents) event.preventDefault(); finalCoord.x = event.targetTouches[0].pageX // Updated X,Y coordinates finalCoord.y = event.targetTouches[0].pageY } // Done Swiping // Swipe should only be on X axis, ignore if swipe on Y axis // Calculate if the swipe was left or right function touchEnd(event) { console.log('Ending swipe gesture...') var changeY = originalCoord.y - finalCoord.y if(changeY < defaults.threshold.y && changeY > (defaults.threshold.y*-1)) { changeX = originalCoord.x - finalCoord.x if(changeX > defaults.threshold.x) { defaults.swipeLeft() } if(changeX < (defaults.threshold.x*-1)) { defaults.swipeRight() } } } // Swipe was canceled function touchCancel(event) { console.log('Canceling swipe gesture...') } // Add gestures to all swipable areas this.addEventListener("touchstart", touchStart, false); this.addEventListener("touchmove", touchMove, false); this.addEventListener("touchend", touchEnd, false); this.addEventListener("touchcancel", touchCancel, false); }); }; })(jQuery); $('.swipe').swipe({ swipeLeft: function() { $('#someDiv').fadeIn() }, swipeRight: function() { $('#someDiv').fadeOut() }, }) 

这就是你如何检测iphone

 if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) { if (document.cookie.indexOf("iphone_redirect=false") == -1) window.location = "path to iphone page"; } 

还有jQuery.touchwipe在http://www.netcu.de/jquery-touchwipe-iphone-ipad-library

最小和最jQuery-esque解决方案在这里: https : //github.com/eikes/jquery.swipe-events.js