diff --git a/jquery.mousewheel.js b/jquery.mousewheel.js index 9a986573..126c9054 100644 --- a/jquery.mousewheel.js +++ b/jquery.mousewheel.js @@ -43,16 +43,31 @@ $.fn.extend({ function handler(event) { - var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true; + var orgEvent = event; + var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; event = $.event.fix(event || window.event); event.type = "mousewheel"; + // Old school scrollwheel delta if ( event.wheelDelta ) delta = event.wheelDelta/120; if ( event.detail ) delta = -event.detail/3; + // New school multidimensional scroll (touchpads) deltas + deltaY = delta; + + // Gecko + if( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaY = 0; + deltaX = -1*delta; + } + + // Webkit + if( orgEvent.wheelDeltaY !== undefined ) deltaY = orgEvent.wheelDeltaY/120; + if( orgEvent.wheelDeltaX !== undefined ) deltaX = -1*orgEvent.wheelDeltaX/120; + // Add event and delta to the front of the arguments - args.unshift(event, delta); + args.unshift(event, delta, deltaX, deltaY); return $.event.handle.apply(this, args); }