js中的事件冒泡

简介: js中的事件冒泡
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>
</head>
<script >
    function  my$(id){
    return document.getElementById(id);
}
    //设置任意元素的中间的文本内容
function setInnnerText(element,text) {
    if(typeof element.textContent=="undefined"){
        element.innerText=text;
    }else{
        element.textContent=text;
    }
}
</script>
<body>
<input type="button" value="创建一个p" id="btn"/>
哈哈哈
<input type="button" value="创建二个p" id="btn2"/>
<div id='dv'> </div>
<div id="dv1" style="width:500px ;height: 500px;background: red;">
    <div id="dv2" style="width:400px ;height: 400px;background: green;">
        <div id="dv3" style="width:300px ;height: 300px;background: orchid;"> </div>
    </div>
</div>
<script>
//
//多个 元素冒泡多个事件有嵌套的关系;
    //div1 和div2和div3点击事件都会发生
    my$("dv1").onclick=function () {
    console.log(this.id);
  };
  my$("dv2").onclick=function () {
    console.log(this.id);
    //阻止事件冒泡
    window.event.cancelBubble=true;
  };
  //事件处理参数对象
  my$("dv3").onclick=function () {
    console.log(this.id);
    //阻止事件冒泡IE支持
    //e.stopPropagation();
    //console.log(e);
  };
 document.body.onclick=function () {
     console.log("颤抖吧,你们这些愚蠢的标签");
 };
 //事件冒泡从里到外
</script>
</body>
</html>

说明:

//事件有三个阶段:

/*

*

* 1.事件捕获阶段 :从外向内

* 2.事件目标阶段 :最开始选择的那个

* 3.事件冒泡阶段 : 从里向外

*

* 为元素绑定事件

* addEventListener("没有on的事件类型",事件处理函数,控制事件阶段的)

* 事件触发的过程中,可能会出现事件冒泡的效果,为了阻止事件冒泡--->

* window.event.cancelBubble=true;谷歌,IE8支持,火狐不支持

* window.event就是一个对象,是IE中的标准

* e.stopPropagation();阻止事件冒泡---->谷歌和火狐支持

* window.event和e都是事件参数对象,一个是IE的标准,一个是火狐的标准

* 事件参数e在IE8的浏览器中是不存在,此时用window.event来代替

* addEventListener中第三个参数是控制事件阶段的

* 事件的阶段有三个:

* 通过e.eventPhase这个属性可以知道当前的事件是什么阶段的

* 如果这个属性的值是:

* 1---->捕获阶段

* 2---->目标阶段

* 3---->冒泡

* 一般默认都是冒泡阶段,很少用捕获阶段

* 冒泡阶段:从里向外

* 捕获阶段:从外向内

* */

相关文章
|
5月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
42 2
|
4月前
|
JavaScript 前端开发
事件委托是JS技巧,通过绑定事件到父元素利用事件冒泡,减少事件处理器数量,提高性能和节省内存。
【6月更文挑战第27天】事件委托是JS技巧,通过绑定事件到父元素利用事件冒泡,减少事件处理器数量,提高性能和节省内存。例如,动态列表可共享一个`click`事件处理器,通过`event.target`识别触发事件的子元素,简化管理和响应动态内容变化。
39 0
|
28天前
|
存储 JavaScript 前端开发
js事件冒泡和事件委托
事件冒泡是指事件从最内层元素开始逐级向上传播至祖先元素的过程,默认情况下,点击子元素时会先触发自身的事件处理程序,再依次向上触发父元素的处理程序。事件委托则是在父元素上设置事件处理程序,利用事件冒泡机制处理子元素的事件,以此减少内存消耗和提高性能,特别适用于处理大量动态子元素的情况。其区别在于事件冒泡是事件传播机制的一部分,而事件委托是编程技巧,通过在父元素上绑定事件处理程序来简化子元素的事件处理。
17 0
|
2月前
|
JavaScript 前端开发 UED
JavaScript中的事件冒泡
JavaScript中的事件冒泡
19 1
|
3月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
41 1
|
4月前
|
JavaScript
Vue.js中使用.self修饰符来处理事件冒泡
Vue.js中使用.self修饰符来处理事件冒泡
|
5月前
|
JavaScript 前端开发
js的事件冒泡
js的事件冒泡
25 1
|
5月前
|
JavaScript 前端开发
JavaScript DOM 操作:解释一下事件冒泡(Event Bubbling)和事件捕获(Event Capturing)。
【4月更文挑战第14天】JavaScript中的事件处理包括冒泡和捕获两个阶段。事件冒泡是从根节点向目标元素逐级向上传播事件,允许在元素内部捕获外部事件。事件捕获则相反,从根节点向下到目标元素,使得外部能捕获内部事件。`addEventListener`方法用于添加事件监听器,通过`useCapture`参数切换冒泡或捕获阶段处理事件,默认为`false`(冒泡阶段)。兼容性考虑,推荐使用`addEventListener`。
46 0
|
5月前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素依次触发事件,而事件捕获则从最外层元素向内层元素传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。例如: ```javascript element.addEventListener(&#39;click&#39;, console.log, false); // 冒泡 element.addEventListener(&#39;click&#39;, console.log, true); // 捕获 ```
40 0