2012-03-07 56 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