手机版

详细解释javascript事件冒泡

时间:2021-09-18 来源:互联网 编辑:宝哥软件园 浏览:

事件是javascript中的核心内容之一,在事件的应用中不可避免地涉及到一个重要的概念,即事件冒泡。在介绍事件冒泡之前,我们先介绍一下事件流的另一个重要概念:1。什么是事件流?文档对象模型(DOM)是一种树形结构,可以在下图中形象地表现出来。

如果一个html元素触发了一个事件,那么这个事件就会按照一定的顺序在触发节点和DOM树中的根节点之间传播,所有经过的节点都会收到触发的事件。这种传播过程称为事件流。根据事件的传播顺序,它们可以分为两类,一类是事件冒泡,另一类是事件捕获,这涉及到本章要介绍的主题:1。事件冒泡:所谓的时间冒泡,是指当一个元素触发一个事件时,事件会像冒泡一样从触发元素扩散到它的所有父节点,直到根节点收到该事件。如果相应的事件处理程序在父元素中注册,那么事件将被传输。例如,在上图中,如果元素A的onclick事件被触发,它的父元素P、document和widow都会收到这个事件,如果在对应的父元素中注册了一个时间处理程序,这个事件处理程序就会被执行。参见代码示例:

htmlhearteta charset=' utf-8 '/title事件冒泡简介/title脚本类型=' text/JavaScript ' window . onload=function(){ var table=document . getelementbyid(' my table ');table . onclick=function(e){ var event=e | | window . event;target=event . srcelelement | | event . target;alert(target . innerhtml);} }/script/head dytable width=' 400 ' border=' 1 ' id=' my table ' tr tdus/TD tdus/TD/trtr tdus/TD tdus/TD/trtr tdus/TD tdus/TD tdus/TD tdus/TD tdus/TD tdus/TD tdus/TD/tr/table/body。但是,在上面的实现中,onclick事件处理程序不是为每个单元格注册的,而是在该单元格的父元素表上注册的。单击单元格时,onclick事件将被触发,该事件将从事件对象向上传播。table元素恰好有一个注册的onclick事件处理程序,它将在此时执行。当然,这里会设置传递事件对象参数的问题。的所有浏览器都支持事件冒泡。2.事件捕获:事件捕获与事件冒泡正好相反。当一个元素被点击时,事件传播的方向是从根元素到触发元素,这是IE浏览器不支持的。对于跨浏览器支持,默认情况下通常使用冒泡事件处理模型。2 .防止事件冒泡的javascript代码事件冒泡在某些场景中非常有用,但有时必须防止。以下是与所有主流浏览器兼容的防止事件冒泡的示例代码。示例:

函数stop bubble(e){ if(ee . stopperpagation){ e . stopperpagation();} else { window . event . cancelubble=true;}}上述代码可以防止事件冒泡。让我们对下面的代码做一个简短的评论。

1 .函数stopBubble(e) {},此函数用于防止事件冒泡,参数为事件对象。2.if(ee . stopperpagation){ e . stopperpagation();},判断是否支持stopPropagation,如果支持,使用e.stopPropagation()。下面的浏览器不支持StopPropagation()函数IE10和IE10。3.Window.event.cancelbuffer=true,当前IE浏览器使用它来防止事件冒泡。以上是关于javascript事件冒泡的详细介绍,希望对大家的学习有所帮助。

版权声明:详细解释javascript事件冒泡是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。