【问题标题】:Understanding namespaced jQuery events, Bootstrap了解命名空间的 jQuery 事件,Bootstrap
【发布时间】:2012-03-07 01:26:34
【问题描述】:

我了解如何触发和侦听自定义事件。我无法弄清楚 Bootstrap 是如何在不触发自定义事件的情况下监听它们的。

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

我无法在他们的代码中找到触发自定义滚动事件的位置。我查看了 jQuery on 文档,看不到事件是否自然地以某种方式命名。

这是如何工作的?

【问题讨论】:

  • 感谢您提出这个问题。我也对此感到困惑。

标签: javascript twitter-bootstrap


【解决方案1】:

他们正在监听 naturally occurring event 的滚动事件。这不是自定义事件,他们只是为其命名。命名空间的原因是您可以通过从所有事件中删除命名空间来删除​​所有事件。看Using Namespaces in unbind

【讨论】:

  • 哦,我明白了。因此,通过侦听“scroll.*”,它会自动匹配“scroll”类型的事件。如果您触发了一个名为“scroll.foo”的自定义事件但您正在侦听“scroll.bar”怎么办?
  • 我不确定,我没有尝试过。但是,是的。侦听“scroll.bar”或“scroll.foo”将捕获每个触发器('scroll')和真正的滚动事件。命名空间主要是为了方便/干净的删除。
  • @kmiyashiro:试试这个:$(window).on('scroll.bar', function () { alert('scroll.bar') }).trigger('scroll.foo'); vs. $(window).on('scroll.bar', function () { alert('scroll.bar') }).trigger('scroll.bar'); - 第一个警报不会显示,而第二个会。
  • 是的,我明白了。不过,这似乎主要是为了删除侦听器而不是触发它们。我最初认为它更多地用于命名触发事件本身。
猜你喜欢
  • 2015-08-28
  • 2011-11-05
  • 2013-06-06
  • 2017-10-03
  • 2014-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
相关资源
最近更新 更多