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"){
  //执行响应函数
}
相关文章
|
6月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
49 2
|
25天前
|
JavaScript 前端开发 UED
JS DOM 事件流与事件冒泡
【10月更文挑战第16天】理解 DOM 事件流和事件冒泡是掌握 JavaScript 事件处理的关键。通过合理利用事件冒泡,可以实现更高效、灵活的事件处理机制,提升用户体验和开发效率。在实际开发中,要根据具体情况灵活运用这些概念,以达到最佳的效果。
|
5月前
|
JavaScript 前端开发
事件委托是JS技巧,通过绑定事件到父元素利用事件冒泡,减少事件处理器数量,提高性能和节省内存。
【6月更文挑战第27天】事件委托是JS技巧,通过绑定事件到父元素利用事件冒泡,减少事件处理器数量,提高性能和节省内存。例如,动态列表可共享一个`click`事件处理器,通过`event.target`识别触发事件的子元素,简化管理和响应动态内容变化。
46 0
|
1月前
|
JavaScript 前端开发 UED
JavaScript中的事件冒泡
JavaScript中的事件冒泡
|
2月前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
24 0
|
3月前
|
JavaScript 前端开发 UED
JavaScript中的事件冒泡
JavaScript中的事件冒泡
26 1
|
4月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
73 1
|
5月前
|
JavaScript
Vue.js中使用.self修饰符来处理事件冒泡
Vue.js中使用.self修饰符来处理事件冒泡
|
6月前
|
JavaScript 前端开发
js的事件冒泡
js的事件冒泡
30 1
|
6月前
|
JavaScript 前端开发
JavaScript DOM 操作:解释一下事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。
【4月更文挑战第14天】JavaScript中的事件处理包括冒泡和捕获两个阶段。事件冒泡是从根节点向目标元素逐级向上传播事件,允许在元素内部捕获外部事件。事件捕获则相反,从根节点向下到目标元素,使得外部能捕获内部事件。`addEventListener`方法用于添加事件监听器,通过`useCapture`参数切换冒泡或捕获阶段处理事件,默认为`false`(冒泡阶段)。兼容性考虑,推荐使用`addEventListener`。
51 0