为什么当元素的儿童的过渡结束transitionend事件可以运行?(Why the transit

2019-09-21 08:13发布

我结合的transitionend事件div1 。 当div1的转变是结束,事件跑去。 这里没有问题。

我遇到了一个特殊情况:

我加了3段这个div1 ,当每个段落的过渡结束, div1transitionend事件也跑了。 所以transitionend事件跑了4倍。 > <

div1transitionend事件的监听功能的身体,我可以看到, event.target !== this 。 我觉得这是很荒谬的!

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

任何人都可以解释为什么一个元素的transitionend事件也可以通过这个元素的子元素被触发?

谢谢。

Answer 1:

这就是所谓的事件冒泡。 存在的一个子元素上的许多事件都会在默认情况下,冒泡通过事件处理程序后,父母被称为原始对象。 您可以检测起泡,因为你已经通过检查发现event对象,或者您可以通过在你处理源对象上的事件停止传播防止起泡。

停止传播是那些东西,是不同的,在IE与其他浏览器之一。 在其他浏览器,你可以调用:

event.stopPropagation()

在IE浏览器IE9之前:

window.event.cancelBubble = true;


文章来源: Why the transitionend event can be run when element's children's transition is ended?