/* * jSwipe - jQuery Plugin * http://plugins.jquery.com/project/swipe * http://www.ryanscherf.com/demos/swipe/ * * Copyright (c) 2009 Ryan Scherf (www.ryanscherf.com) * Licensed under the MIT license * * $Date: 2009-07-14 (Tue, 14 Jul 2009) $ * $version: 0.1 * * This jQuery plugin will only run on devices running Mobile Safari * on iPhone or iPod Touch devices running iPhone OS 2.0 or later. * http://developer.apple.com/iphone/library/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5 */ (function($) { $.fn.swipe = function(options) { // Default thresholds & swipe functions var defaults = { threshold: { x: 90, //x: 30, (x=30 means sensitivity is too high. because clicking and touching both work as same so, increased it to 100 to make diff between them) y: 300 }, swipeLeft: function() { swipeEvent('previous'); }, swipeRight: function() { swipeEvent('next'); }, //added , here and below preventDefaultEvents: true variable. preventDefaultEvents: false }; 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) { //event.preventDefault(); 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...') } try{ // 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); } catch(e) { this.attachEvent("touchstart", touchStart); this.attachEvent("touchmove", touchMove); this.attachEvent("touchend", touchEnd); this.attachEvent("touchcancel", touchCancel); } }); }; })(jQuery);