2009-08-31 139 views

回答

13

事件冒泡是信息通过深层结构向上移动的想法,当适当的设计决定信息通常只应该向下流动时。

在非常基本的术语中,想象一个单一的对象。正确设计,这个对象应该只知道它自己的子对象。它不应该与其父母直接互动。反过来,它的孩子和父母对象也应遵循相同的规则。实际上,这意味着信息只能向下流动 - 父母可以调用方法,向孩子发送数据或从孩子中提取数据,但孩子不能强行向其父母做同样的事情。

想象一下当你在水下吹气泡会发生什么 - 你不需要推向表面 - 你只需释放它,它就可以自行移动。相同的概念适用于事件冒泡 - 更深层次的控制只是简单地“释放”他们的信息 - 通常是通过一个事件 - 并且它“直接”链上而不直接调用任何东西。

对于像Stackoverflow(或几乎任何类型的网站)的网站,冒泡的概念是相同的。很显然,每个帖子都不应该直接放在主页上,但是当一个帖子被更新时,这个帖子会从层次结构中最深的一点发布 - 一个帖子 - 然后浮到最高层,处理(选择是否显示在主页上)。

+0

非常简洁的答案。 – 2009-08-31 03:35:01

+1

@Kirk,这是一个很好的答案,但我认为你对简洁的定义与我的不同:-)简洁将是“事件或答案毫不费力地浮到顶端,就像水中的气泡一样”。 – paxdiablo 2009-08-31 04:06:40

+0

@Kirk @Pax我在想同样的事情:)我很欣赏恭维,但即使我希望这个答案更短。有时候我会因为我的解释而被带走。 – 2009-08-31 04:08:20

3

如果你问的是这个术语,我想这是一个类比事件'冒泡'直到顶部,就像液体中的气泡一样。

如果你问的是什么事件冒泡,它是一个被一个对象捕获的事件,它会将它反射到任何其他正在侦听它的对象。

引述了一篇好文章here

...一个叫事件冒泡 技术,它允许一个子控件 传播事件了其遏制 层次。事件冒泡使 事件从更 方便的位置在控制 层次得到提升,让事件处理 连接到原来的控制, 以及对暴露 发泡的事件控制。