js事件冒泡

简介: js事件冒泡

所谓冒泡就是时间的向上传到,当后代元素上的时间被触发时,其祖先元素的相同事件也会被触发。

比如:

body > div > span

给三者都绑定了单击响应函数,点击span,会触发span,div,body三者的单击响应函数。

在开发中,大部分情况冒泡都是有用的。

比如:给document绑定了onmousemove的事件,倘若没有冒泡,页面中有div,鼠标滑过div时,onmousemove事件无法被触发,则onmousemove无法完成跟随鼠标移动而触发事件。

 

取消冒泡

若不希望发生事件冒泡,可以通过事件对象来取消冒泡。

可以将事件对象的cancelBubbble设置为true,即可取消冒泡

span1.onclick = function(event){
  event.cancelBubble = true;
};

事件的委派

在开发中,有些元素是后添加的,但同样需要绑定事件。

我们希望,只绑定一次事件,即可应用到多个元素上,即使元素是后添加的。

利用冒泡原理,可以尝试将其绑定给元素的共有祖先元素,通过祖先元素的响应函数来处理事件。

比如:

想要给li绑定事件,有些li是通过js后添加的,这时候可以将事件绑定给ul。

但这种方法有个问题,整个ul部分都可以触发这个事件。

处理方法:判断触发事件的对象是否是我们期望的元素,是则执行

需要用到event.target.元素

 

if (event.target.className=="link"){
  //执行响应函数
}
相关文章
|
9天前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
21 2
|
2月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素依次触发事件,而事件捕获则从最外层元素向内层元素传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。例如: ```javascript element.addEventListener('click', console.log, false); // 冒泡 element.addEventListener('click', console.log, true); // 捕获 ```
18 0
|
4月前
|
JavaScript
js中的事件冒泡
js中的事件冒泡
18 0
|
4月前
|
JavaScript
js中的事件冒泡和事件捕捉
js中的事件冒泡和事件捕捉
12 0
|
4月前
|
JavaScript 前端开发
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
【面试题】对JS中的事件冒泡、事件捕获、事件委托的理解
|
5月前
|
JavaScript 前端开发
JavaScript DOM 操作:解释一下事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。
JavaScript DOM 操作:解释一下事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。
32 2
|
7月前
|
JavaScript 前端开发
JavaScript学习 -- 事件冒泡与事件委派(委托)
JavaScript学习 -- 事件冒泡与事件委派(委托)
29 0
|
7月前
|
JavaScript 容器
js中的事件冒泡与事件捕获
js中的事件冒泡与事件捕获
17 0
|
9月前
|
JavaScript 前端开发
JS的冒泡和如何阻止事件冒泡
JS的冒泡和如何阻止事件冒泡
118 0
|
JavaScript 前端开发
简单解析js的事件冒泡及如何取消事件冒泡
简单解析js的事件冒泡 1.什么是事件冒泡? 以click点击事件为例。假如我们有一个多层结构标签。如下图,是4个div嵌套。每个div都有点击的监听事件,分别alert(“box4”),alert(“box3”),alert(“box2”),alert(“box1”)。当我们点击最里面的div时,点击事件开始传递。出现的效果是alert(“box4”)-alert(“box3”)-alert(“box2”)-alert(“box1”)。这就是事件冒泡阶段。效果如下: 在这里插入图片描述 HTML代码: <div class="box1"> <div clas
简单解析js的事件冒泡及如何取消事件冒泡