众所周知,安卓手机上touch事件一直有各类各样莫名其妙的问题。html
$('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(); } });