2012-03-07 58 views
3

我明白如何觸發和監聽自定義事件。我無法弄清楚Bootstrap如何在不觸發它們的情況下監聽自定義事件。理解命名空間jQuery的事件,引導

https://github.com/twitter/bootstrap/blob/master/js/bootstrap-scrollspy.js#L32

無處在他們的代碼中可以找到在那裏它們被觸發的自定義滾動事件。我看了看jQuery on文檔,並且不知道事件是否自然是命名空間。

這是如何工作的?

+0

感謝您提出這個問題。我也對此感到困惑。 – Oliver 2013-10-31 10:14:51

回答

3

他們聽滾動事件這是一個naturally occurring event。這不是一個自定義事件,他們只是命名空間。命名空間的原因是,您可以通過從所有事件中刪除名稱空間來刪除​​所有事件。看看Using Namespaces in unbind

+0

哦,我明白了。所以,通過監聽「滾動。*」,它會自動匹配只是類型的事件‘滾動’。如果你什麼叫觸發一個自定義事件‘scroll.foo’但你聆聽‘scroll.bar’? – kmiyashiro 2012-03-07 02:35:04

+0

我不知道,我還沒有試過,但是,是的。聽爲「scroll.bar」或「scroll.foo」會抓住每個觸發器(「滾動」)和實時滾動的事件。命名空間主要是爲便於/清除乾淨。 – 2012-03-07 15:35:05

+0

@ kmiyashiro:試試這個:'$(window).on('scroll.bar',function(){alert('scroll.bar')})。trigger('scroll.foo');'vs.'$(window )。在( 'scroll.bar',函數(){警報( 'scroll.bar')})觸發( 'scroll.bar');' - 第一警報將不會顯示,而第二個將 – Oliver 2013-10-31 10:18:28