为什么在元素的子元素转换结束时可以运行transitionend事件?

时间:2012-08-18 21:17:49

标签: html5 css3 css-transitions transition transitions

我将transitionend事件绑定到div1。当div1的转换结束时,事件就会运行。没问题。

我遇到了一个特例:

我为此div1添加了3个段落,当每个段落的转换结束时,div1的{​​{1}}事件也会运行。所以transitionend事件运行了4次。 >。<

transitionend的{​​{1}}事件的侦听器功能正文中,我可以看到div1!== transitionend。我觉得这太荒谬了!

Chrome和Firefox都存在这个问题。所以我想这不是浏览器的HTML5规范实现错误。

有人可以解释为什么元素的event.target事件也可以被这个元素的子元素触发吗?

谢谢。

1 个答案:

答案 0 :(得分:10)

这称为事件冒泡。默认情况下,在源元素上调用事件处理程序后,子元素上发生的许多事件将通过父元素冒泡。您可以通过检查event对象来检测冒泡,也可以通过在源对象上处理事件时停止传播来阻止冒泡。

停止传播是IE与其他浏览器不同的一种方式。在其他浏览器中,您可以调用:

event.stopPropagation()

在IE9之前的IE中:

window.event.cancelBubble = true;