2013-01-18 79 views
3

我測試下面的代碼:綁定鼠標滾輪返回undefined

$(window).bind('mousewheel', function(e) { 
    alert(e.wheelDelta); 
}); 

我每次都進入了mousehweel,我得到「未定義」。任何人都可以幫助,因爲我試圖捕捉鼠標滾輪並根據它移動div。

+0

嘗試'的console.log(E)'您的綁定函數中。這會告訴你它擁有哪些屬性。 –

回答

2

我認爲你必須做一點點工作,得到它在所有瀏覽器的工作 - 或者嘗試jquery-mousewheel extension

如果延長仍不能正常工作,你可以試試我創造了這個修改版前一段時間:

/* jquery.mousewheel.min.js 
* 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; 
     if (f.wheelDelta) { 
      g = f.wheelDelta/120 
     } 
     if (f.detail) { 
      g = -f.detail/3 
     } 
     // I had to move the following two lines down, probably because of jQuery update 
     f = c.event.fix(f || window.event); 
     f.type = "mousewheel"; 
     f.pageX = f.originalEvent.pageX; 
     f.pageY = f.originalEvent.pageY; 
     d.unshift(f, g); 
     return c.event.handle.apply(this, d) 
    } 
})(jQuery); 

我剛剛在Firefox和Chrome中測試過它,但我不知道它是否適用於其他瀏覽器。用法:

$('element').mousewheel(function(e, delta) { alert(delta); }); 
+0

'$(window).bind('mousewheel',function(event,delta,deltaY,deltaX){ \t alert(delta); });' 我已經添加了此擴展並測試了以下代碼鉻)。我得到相同的數據。 Firefox似乎無法檢測到它。 – Glenn

+0

'e.originalEvent.wheelDelta'似乎在Chrome中返回我想要的數據。 IE和Firefox似乎沒有反應(甚至不觸發事件)。 – Glenn

+0

哦,我記得當我使用它時,有一些錯誤需要修復。看到上面的代碼,它適用於我。 – Yogu

2

我結束了使用下面的代碼片斷:

jQuery(function($) { 
$(document) 
     .bind('mousewheel', function(event, delta) { 
     if(delta > 0) { 
        // Scrolling down 
     } else { 
        // Scrolling up 
     } 
    }); 
}); 

這需要jQuery的鼠標滾輪的推廣與在IE,火狐和Chrome的工作。

0

我有同樣的問題,而解決辦法是jquery的版本從1.7.x改變的1.9.x