1. Touch Swipe Events for Touch Devices
var xDown = null; var yDown = null; document.addEventListener('touchstart', handleTouchStart, false); document.addEventListener('touchmove', handleTouchMove, false); function handleTouchStart(evt) { xDown = evt.touches[0].clientX; yDown = evt.touches[0].clientY; }; function handleTouchMove(evt) { if (!xDown || !yDown) { return; } var xUp = evt.touches[0].clientX; var yUp = evt.touches[0].clientY; var xDiff = xDown - xUp; var yDiff = yDown - yUp; if (Math.abs(xDiff) > Math.abs(yDiff)) { if (xDiff > 0) { // swipe right direction } else { // swipe left direction } } else { if (yDiff > 0) { // swipe down direction } else { // swipe up direction } } /* reset values */ xDown = null; yDown = null; };
Unbind event:
$('body').unbind('touchmove');
2. Direction Arrow Keys Binding
// set key binding for direction arrows $(document).keydown(function(e) { switch(e.which) { case 37: // left direction break; case 38: // up direction break; case 39: // right direction break; case 40: // down direction break; default: return; // exit this handler for other keys } e.preventDefault(); // prevent the default action (scroll / move caret) });
Unbind event:
$(document).unbind('keydown');
3. Mouse move direction events
var last_position = {}; $(document).on('mousemove', function (event) { //check to make sure there is data to compare against if (typeof(last_position.x) != 'undefined') { //get the change from last position to this position var deltaX = last_position.x - event.clientX, deltaY = last_position.y - event.clientY; //check which direction had the highest amplitude and then figure out direction by checking if the value is greater or less than zero if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX > 0) { // mouse move left } else if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX < 0) { // mouse move right } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY > 0) { // mouse move up } else if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY < 0) { // mouse move down } } //set the new last position to the current for next time last_position = { x : event.clientX, y : event.clientY }; });
Unbind event:
$(document).off('mousemove');