我读了这篇关于路由事件的好文章,我明白了为什么我们有时需要冒泡事件,有时需要隧道事件。
我不明白的是,当我们使用隧道事件时,为什么在处理或到达源元素之后,仍然会启动气泡事件?
提前致谢!
文章说,如果您将图像放在按钮上,然后单击该图像,则该图像的隧道事件将触发。但是您很可能还希望像单击按钮本身一样处理该单击,因此还会触发一个气泡事件,该事件会冒泡到按钮本身的单击事件(因为按钮拥有图像),所以您可以使用按钮的常用事件处理程序将图像单击视为按钮单击。
我还想补充一点,(隧道和泡泡)的事件是不同的。对于隧道,我们使用 PreviewXXX(例如:PreviewMouseDown),对于气泡事件,我们使用 XXX(例如:MouseDown)事件。
按顺序,Tunnel 事件首先从应用程序的根开始触发,并在源端结束。并触发了 Bubble 事件。
拥有这两个事件是非常有意义的。