如果我有一个元素(html)嵌套在另一个元素中,并且它们都具有附加的点击处理程序,那么单击内部元素将执行其点击处理程序,然后冒泡到父级并执行其点击处理程序.这就是我的理解.
如果没有附加的事件是相同的事情,那么事件会浮起来吗?如果是,是否值得在每个处理程序的末尾放置一个event.stopPropagation(),以阻止它并加快速度?
解决方法
事件几乎总是起泡,除非设置event.cancelBubble = true或使用event.stopPropagation().你只知道它,但是,当你的一个事件
处理程序被绊倒.
处理程序被绊倒.
有关泡沫的事件列表,请参阅http://en.wikipedia.org/wiki/DOM_events. (注意:在HTML事件的表中,可取消指的是event.preventDefault()的有效性或返回false以取消默认动作,而不是冒泡)
另见http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow,特别是1.2.1基本流程,以了解事件传播的捕获阶段和冒泡阶段.
编辑
http://mark-story.com/posts/view/speed-up-javascript-event-handling-with-event-delegation-and-bubbling建议通过停止传播来提供性能增益,但不提供任何数据.
http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/a9af0aa4216a8046表明,浏览器应该针对起泡行为进行优化,并说应该没有显着的性能差异.再也没有数据.
http://developer.yahoo.com/performance/rules.html#events提供了一种改进事件处理性能的良好技术,但不直接谈论stopPropagation性能.
最终,您必须设定差异,以了解您的网站的好处.