--- /dev/null
+# Mouse Wheel ChangeLog
+
+
+# 3.0.2
+
+* Fixed delta being opposite value in latest Opera
+* No longer fix pageX, pageY for older mozilla browsers
+* Removed browser detection
+* Cleaned up the code
+
+
+# 3.0.1
+
+* Bad release... creating a new release due to plugins.jquery.com issue :(
+
+
+# 3.0
+
+* Uses new special events API in jQuery 1.2.2+
+* You can now treat "mousewheel" as a normal event and use .bind, .unbind and .trigger
+* Using jQuery.data API for expandos
+
+
+# 2.2
+
+* Fixed pageX, pageY, clientX and clientY event properties for Mozilla based browsers
+
+
+# 2.1.1
+
+* Updated to work with jQuery 1.1.3
+* Used one instead of bind to do unload event for clean up.
+
+
+# 2.1
+
+* Fixed an issue with the unload handler
+
+
+# 2.0
+
+* Major reduction in code size and complexity (internals have change a whole lot)
+
+
+# 1.0
+
+* Fixed Opera issue
+* Fixed an issue with children elements that also have a mousewheel handler
+* Added ability to handle multiple handlers
\ No newline at end of file
--- /dev/null
+# jQuery Mouse Wheel Plugin
+
+A jQuery plugin that adds cross-browser mouse wheel support.
+
+The latest stable release can be downloaded from the [project page](http://plugins.jquery.com/project/mousewheel)
+
+## License
+
+The mousewheel plugin is dual licensed *(just like jQuery)* under the [MIT](http://www.opensource.org/licenses/mit-license.php) and [GPL](http://www.opensource.org/licenses/gpl-license.php) licenses.
+
+Copyright (c) 2009 [Brandon Aaron](http://brandonaaron.net)
\ No newline at end of file
--- /dev/null
+/*! Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ *
+ * Version: 3.0.2
+ *
+ * Requires: 1.2.2+
+ */
+
+(function($) {
+
+var types = ['DOMMouseScroll', 'mousewheel'];
+
+$.event.special.mousewheel = {
+ setup: function() {
+ if ( this.addEventListener )
+ for ( var i=types.length; i; )
+ this.addEventListener( types[--i], handler, false );
+ else
+ this.onmousewheel = handler;
+ },
+
+ teardown: function() {
+ if ( this.removeEventListener )
+ for ( var i=types.length; i; )
+ this.removeEventListener( types[--i], handler, false );
+ else
+ this.onmousewheel = null;
+ }
+};
+
+$.fn.extend({
+ mousewheel: function(fn) {
+ return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
+ },
+
+ unmousewheel: function(fn) {
+ return this.unbind("mousewheel", fn);
+ }
+});
+
+
+function handler(event) {
+ var args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true;
+
+ event = $.event.fix(event || window.event);
+ event.type = "mousewheel";
+
+ if ( event.wheelDelta ) delta = event.wheelDelta/120;
+ if ( event.detail ) delta = -event.detail/3;
+
+ // Add events and delta to the front of the arguments
+ args.unshift(event, delta);
+
+ return $.event.handle.apply(this, args);
+}
+
+})(jQuery);
\ No newline at end of file
--- /dev/null
+/* Copyright (c) 2009 Brandon Aaron (http://brandonaaron.net)
+ * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
+ * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
+ * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
+ * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
+ *
+ * Version: 3.0.2
+ *
+ * Requires: 1.2.2+
+ */
+(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);
\ No newline at end of file
--- /dev/null
+<!doctype html>
+<html>
+ <head>
+ <title>Testing mousewheel plugin</title>
+ <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
+ <script type="text/javascript" src="../jquery.mousewheel.js"></script>
+
+ <style>
+ #test1 {
+ background-color: #000;
+ width: 100px;
+ height: 100px;
+ color: #fff;
+ float: left;
+ }
+
+ #test2 {
+ background-color: #333;
+ width: 100px;
+ height: 100px;
+ color: #fff;
+ float: left;
+ }
+
+ #test3 {
+ background-color: #666;
+ width: 100px;
+ height: 100px;
+ color: #fff;
+ float: left;
+ }
+
+ #test4 {
+ background-color: #000;
+ width: 100px;
+ height: 100px;
+ color: #fff;
+ float: left;
+ }
+
+ #test5 {
+ background-color: #333;
+ padding: 5px;
+ width: 400px;
+ height: 400px;
+ color: #fff;
+ float: left;
+ }
+
+ #test6 {
+ background-color: #666;
+ padding: 5px;
+ width: 250px;
+ height: 250px;
+ color: #fff;
+ float: left;
+ }
+
+ #test7 {
+ background-color: #000;
+ padding: 5px;
+ width: 100px;
+ height: 100px;
+ color: #fff;
+ float: left;
+ }
+
+ #forceScroll {
+ clear: both;
+ height: 1000px;
+ }
+
+ #logger {
+ position: absolute;
+ top: 395px;
+ left: 12px;
+ width: 380px;
+ height: 290px;
+ overflow: auto;
+ }
+ </style>
+ <script type="text/javascript">
+ $(function() {
+ $('#userAgent').html(navigator.userAgent);
+
+
+ $('#test1')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test1: up ('+delta+')');
+ else if (delta < 0)
+ log('#test1: down ('+delta+')');
+
+ log('pageX: ' + event.pageX + ' pageY: ' + event.pageY );
+ });
+
+ $('#test2')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test2: up ('+delta+')');
+ else if (delta < 0)
+ log('#test2: down ('+delta+')');
+ return false; // prevent default
+ });
+
+ $('#test3')
+ .hover(function() { log('#test3: mouseover'); }, function() { log('#test3: mouseout'); })
+ .mousewheel(function(event, delta) {
+ log('#test3: I should not have been logged');
+ })
+ .unmousewheel();
+
+ var testRemoval = function(event, delta) {
+ log('#test4: I should not have been logged');
+ };
+
+ $('#test4')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test4: up ('+delta+')');
+ else if (delta < 0)
+ log('#test4: down ('+delta+')');
+ return false;
+ })
+ .mousewheel(testRemoval)
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test4: up ('+delta+') from 2nd handler');
+ else if (delta < 0)
+ log('#test4: down ('+delta+') from 2nd handler');
+ return false;
+ })
+ .unmousewheel(testRemoval);
+
+ $('#test5')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test5: up ('+delta+')');
+ else if (delta < 0)
+ log('#test5: down ('+delta+')');
+
+ event.stopPropagation();
+ event.preventDefault();
+ });
+
+ $('#test6')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test6: up ('+delta+')');
+ else if (delta < 0)
+ log('#test6: down ('+delta+')');
+
+ event.stopPropagation();
+ event.preventDefault();
+ });
+
+ $('#test7')
+ .mousewheel(function(event, delta) {
+ if (delta > 0)
+ log('#test7: up ('+delta+')');
+ else if (delta < 0)
+ log('#test7 down ('+delta+')');
+
+ event.preventDefault();
+ });
+
+ function log(msg) {
+ $('#logger').append(msg+'<br>').scrollTop(999999);
+ };
+ });
+ </script>
+ </head>
+ <body>
+ <h1 id="banner">jQuery mousewheel.js - Test</h1>
+ <h2 id="userAgent"></h2>
+
+ <ul>
+ <li><strong>Test1</strong> is just using the plain on mousewheel() with a function passed in and does not prevent default. (Also logs the value of pageX and pageY event properties.)</li>
+ <li><strong>Test2</strong> should prevent the default action.</li>
+ <li><strong>Test3</strong> should only log a mouseover and mouseout event. Testing unmousewheel().</li>
+ <li><strong>Test4</strong> has two handlers.</li>
+ <li><strong>Test5</strong> is like Test2 but has children. The children should not scroll until mousing over them.</li>
+ <li><strong>Test6</strong> is like Test5 but should not scroll children or parents.</li>
+ <li><strong>Test7</strong> is like Test6 but has no children. It will propagate the event and scroll test 6 as well.</li>
+ </ul>
+
+
+ <div id="test1"><p>Test1</p></div>
+ <div id="test2"><p>Test2</p></div>
+ <div id="test3"><p>Test3</p></div>
+ <div id="test4"><p>Test4</p></div>
+ <div id="test5">
+ <p>Test5</p>
+ <div id="test6">
+ <p>Test6</p>
+ <div id="test7"><p>Test7</p></div>
+ </div>
+ </div>
+
+ <div id="logger"></div>
+
+ <div id="forceScroll"></div>
+ </body>
+</html>