|
/* |
|
* 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.2 |
|
* |
|
* 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: 30, |
|
y: 10 |
|
}, |
|
swipeLeft: function() { alert('swiped left') }, |
|
swipeRight: function() { alert('swiped right') } |
|
}; |
|
|
|
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(); |
|
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 started |
|
function touchStart(event) { |
|
//console.log('Starting swipe gesture...') |
|
originalCoord.x = event.targetTouches[0].pageX |
|
originalCoord.y = event.targetTouches[0].pageY |
|
|
|
finalCoord.x = originalCoord.x |
|
finalCoord.y = originalCoord.y |
|
} |
|
|
|
// 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); |