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>