front_idill/lib/jquery.mousewheel-2.0.0.js
changeset 52 277c94533395
equal deleted inserted replaced
51:03ea3d7ddbe1 52:277c94533395
       
     1 /* Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
       
     2  * Licensed under the MIT License (LICENSE.txt).
       
     3  *
       
     4  * Thanks to: Andrew Cobby (@andrewcobby http://github.com/cobbweb)
       
     5  *              - Refactored for jQuery 1.7+ only
       
     6  *              - Use MozMousePixelScroll for new Gecko browsers
       
     7  * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
       
     8  * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
       
     9  * Thanks to: Seamus Leahy for adding deltaX and deltaY
       
    10  *
       
    11  * Version: 2.0.0
       
    12  *
       
    13  * Recommended for jQuery 1.7+
       
    14  * Should work with older versions though
       
    15  */
       
    16 
       
    17 (function($,undefined) {
       
    18 
       
    19     var types = ['DOMMouseScroll', 'mousewheel', 'MozMousePixelScroll'];
       
    20 
       
    21     if ($.event.fixHooks) {
       
    22         for (var i=types.length; i;) {
       
    23             $.event.fixHooks[types[--i]] = $.event.mouseHooks;
       
    24         }
       
    25     }
       
    26 
       
    27     $.event.special.mousewheel = {
       
    28         setup: function() {
       
    29             if (this.addEventListener) {
       
    30                 for (var i=types.length; i;) {
       
    31                     this.addEventListener(types[--i], handler, false);
       
    32                 }
       
    33             } else {
       
    34                 this.onmousewheel = handler;
       
    35             }
       
    36         },
       
    37 
       
    38         teardown: function() {
       
    39             if (this.removeEventListener) {
       
    40                 for (var i=types.length; i;) {
       
    41                     this.removeEventListener(types[--i], handler, false);
       
    42                 }
       
    43             } else {
       
    44                 this.onmousewheel = null;
       
    45             }
       
    46         }
       
    47     };
       
    48 
       
    49     function handler(event) {
       
    50         var orgEvent = event || window.event, args = [].slice.call(arguments, 1), delta = 0, deltaX = 0, deltaY = 0;
       
    51         event = $.event.fix(orgEvent);
       
    52         event.type = "mousewheel";
       
    53 
       
    54         // Old school scrollwheel delta
       
    55         if (orgEvent.wheelDelta) {
       
    56             delta = orgEvent.wheelDelta / 120;
       
    57         }
       
    58 
       
    59         if (orgEvent.detail) {
       
    60             if (orgEvent.type == types[2]) {
       
    61                 // Firefox 4+, unbind old DOMMouseScroll event
       
    62                 this.removeEventListener(types[0], handler, false);
       
    63                 delta = -orgEvent.detail / 42;
       
    64             } else {
       
    65                 delta = -orgEvent.detail / 3;
       
    66             }
       
    67         }
       
    68 
       
    69         // New school multidimensional scroll (touchpads) deltas
       
    70         deltaY = delta;
       
    71 
       
    72         // Gecko
       
    73         if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {
       
    74             deltaY = 0;
       
    75             deltaX = -1 * delta;
       
    76         }
       
    77 
       
    78         // Webkit
       
    79         if (orgEvent.wheelDeltaY !== undefined) {
       
    80             deltaY = orgEvent.wheelDeltaY / 120;
       
    81         }
       
    82 
       
    83         if (orgEvent.wheelDeltaX !== undefined) {
       
    84             deltaX = -1 * orgEvent.wheelDeltaX / 120;
       
    85         }
       
    86 
       
    87         // Add event and delta to the front of the arguments
       
    88         args.unshift(event, delta, deltaX, deltaY);
       
    89 
       
    90         return ($.event.dispatch || $.event.handle).apply(this, args);
       
    91     }
       
    92 
       
    93 })(jQuery);