众所周知,安卓手机上touch事件一直有各种各样莫名其妙的问题。
$(‘body‘).bind("touchmove", function(e) {
e.preventDefault();
});
$(id).bind("touchmove", function(e) {
e.stopPropagation()
});
var startX, startY; var endX, endY; var distanceX, distanceY; $(‘body‘).bind(‘touchstart‘, function(event) { startX = event.targetTouches[0].clientX; startY = event.targetTouches[0].clientY; }).bind(‘touchend‘, function(event) { endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { startX - endX > 0 ? swipeLeft() : swipeRight(); } });
var count = 0; //判断用户是否第一次进行touchmove操作 var startX, startY; var endX, endY; var distanceX, distanceY; $(‘body‘).bind(‘touchstart‘, function(event) { count = 0; //每次开始点击时清零 startX = event.targetTouches[0].clientX; startY = event.targetTouches[0].clientY; }).bind(‘touchmove‘, function(event) { if (count === 0) { //如果是第一次滑动 endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { //如果X绝对距离大于Y绝对距离 event.preventDefault(); } } count++; }).bind(‘touchend‘, function(event) { endX = event.changedTouches[0].clientX; endY = event.changedTouches[0].clientY; distanceX = Math.abs(startX - endX); distanceY = Math.abs(startY - endY); if (distanceX > distanceY) { startX - endX > 0 ? swipeLeft() : swipeRight(); } });
原文:http://www.cnblogs.com/EX32/p/4366306.html