2015-04-06 62 views
0

我使用「DOMMouseScroll」事件代替鼠標滾輪以支持Firefox。我不知道爲什麼我得到以下行爲:多個jQuery .on()事件不起作用xBrowser(取決於順序)

以下將允許DOMMouseScroll在Firefox中工作,但我的滾動或鼠標滾輪事件不會觸發。

$contents.on 'scroll, mousewheel, DOMMouseScroll', @handleScroll 

但是,當我分開綁定,一切工作正常在Chrome和Firefox。

$contents.on 'scroll, mousewheel', @handleScroll 
$contents.on 'DOMMouseScroll', @handleScroll 

如果我重新安排到下面,我得到的鍍鉻重新工作,而在Firefox:

$contents.on 'scroll, DOMMouseScroll, mousewheel', @handleScroll 

如此明顯的順序是有意義的,其中滾輪是最後的綁定,以便它工作在DDOMMouseScroll,並將它們分開是解決方案。我只想知道爲什麼。

當我看着the jQuery source for .on()我看到:

function (types, selector, data, fn, one) { 
    var type, origFn; 

    if (typeof types === "object") { 
     if (typeof selector !== "string") { 
      data = data || selector; 
      selector = undefined; 
     } 
     for (type in types) { 
      this.on(type, selector, data, types[type], one); 
     } 
     return this; 
    } 

不應該類型的類型環路提供爲創建單獨的個人綁定同樣的效果?

回答

0

你不應該在on方法逗號:

$contents.on 'scroll mousewheel DOMMouseScroll', @handleScroll 

在你的情況的jQuery是聽像scroll,DOMMouseScroll,事件。

jQuery Docs:https://api.jquery.com/on/