1 /** 2 * 3 * credits for this plugin go to brandonaaron.net 4 * 5 * unfortunately his site is down 6 * 7 * @param {Object} up 8 * @param {Object} down 9 * @param {Object} preventDefault 10 */ 11 jQuery.fn.extend({ 12 mousewheel: function(up, down, preventDefault) { 13 return this.hover( 14 function() { 15 jQuery.event.mousewheel.giveFocus(this, up, down, preventDefault); 16 }, 17 function() { 18 jQuery.event.mousewheel.removeFocus(this); 19 } 20 ); 21 }, 22 mousewheeldown: function(fn, preventDefault) { 23 return this.mousewheel(function(){}, fn, preventDefault); 24 }, 25 mousewheelup: function(fn, preventDefault) { 26 return this.mousewheel(fn, function(){}, preventDefault); 27 }, 28 unmousewheel: function() { 29 return this.each(function() { 30 jQuery(this).unmouseover().unmouseout(); 31 jQuery.event.mousewheel.removeFocus(this); 32 }); 33 }, 34 unmousewheeldown: jQuery.fn.unmousewheel, 35 unmousewheelup: jQuery.fn.unmousewheel 36 }); 37 38 39 jQuery.event.mousewheel = { 40 giveFocus: function(el, up, down, preventDefault) { 41 if (el._handleMousewheel) jQuery(el).unmousewheel(); 42 43 if (preventDefault == window.undefined && down && down.constructor != Function) { 44 preventDefault = down; 45 down = null; 46 } 47 48 el._handleMousewheel = function(event) { 49 if (!event) event = window.event; 50 if (preventDefault) 51 if (event.preventDefault) event.preventDefault(); 52 else event.returnValue = false; 53 var delta = 0; 54 if (event.wheelDelta) { 55 delta = event.wheelDelta/120; 56 if (window.opera) delta = -delta; 57 } else if (event.detail) { 58 delta = -event.detail/3; 59 } 60 if (up && (delta > 0 || !down)) 61 up.apply(el, [event, delta]); 62 else if (down && delta < 0) 63 down.apply(el, [event, delta]); 64 }; 65 66 if (window.addEventListener) 67 window.addEventListener('DOMMouseScroll', el._handleMousewheel, false); 68 window.onmousewheel = document.onmousewheel = el._handleMousewheel; 69 }, 70 71 removeFocus: function(el) { 72 if (!el._handleMousewheel) return; 73 74 if (window.removeEventListener) 75 window.removeEventListener('DOMMouseScroll', el._handleMousewheel, false); 76 window.onmousewheel = document.onmousewheel = null; 77 el._handleMousewheel = null; 78 } 79 };
使用:
<script> var intOverallDelta = 0; $("#divScroll").mousewheel(function(objEvent, intDelta){ if (intDelta > 0){ intOverallDelta++; $("#divScroll").html('up - (' + intOverallDelta + ')'); } else if (intDelta < 0){ intOverallDelta--; $("#divScroll").html('down - (' + intOverallDelta + ')'); } }); </script>