przykład robocza: http://jsfiddle.net/Gajotres/K69AJ/
Przykład ten jest wykonany z wydarzeniami jQuery Telefony więc będzie pracować tylko z jQuery Mobile. Testowany na platformach Windows i Android.
Wydarzenia Vmouse zostały stworzone w celu zlikwidowania różnicy między przeglądarkami na komputery stacjonarne i urządzenia mobilne.
zauważyć również tę linię:
event.preventDefault();
jest to potrzebne dla platformy Android, platforma ma paskudny błąd z wykrywaniem ruchu dotykowego. Raport o błędzie: http://code.google.com/p/android/issues/detail?id=19827
var gnStartX = 0;
var gnStartY = 0;
var gnEndX = 0;
var gnEndY = 0;
$(document).on('vmousedown', function(event){
gnStartX = event.pageX;
gnStartY = event.pageY;
event.preventDefault();
});
$(document).on('vmouseup', function(event){
gnEndX = event.pageX;
gnEndY = event.pageY;
var distance = Math.ceil(nthroot(Math.pow((gnEndX - gnStartX),2) + Math.pow((gnEndY - gnStartY),2), 2));
if(Math.abs(gnEndX - gnStartX) > Math.abs(gnEndY - gnStartY)) {
if(gnEndX > gnStartX) {
alert("Swipe Right - Distance " + distance + 'px');
} else {
alert("Swipe Left - Distance " + distance + 'px');
}
} else {
if(gnEndY > gnStartY) {
alert("Swipe Bottom - Distance " + distance + 'px');
} else {
alert("Swipe Top - Distance " + distance + 'px');
}
}
event.preventDefault();
});
function nthroot(x, n) {
try {
var negate = n % 2 == 1 && x < 0;
if(negate)
x = -x;
var possible = Math.pow(x, 1/n);
n = Math.pow(possible, n);
if(Math.abs(x - n) < 1 && (x > 0 == n > 0))
return negate ? -possible : possible;
} catch(e){}
}
Jakiej platformy potrzebujesz? – Gajotres