事件捕获 & 事件冒泡

<body>
    <div id="div1">
        <div id="div2">
            <div id="div3"></div>
        </div>
    </div>
</body>

<script>
window.onload = function() {

    var oDiv1 = document.getElementById(‘div1‘);
    var oDiv2 = document.getElementById(‘div2‘);
    var oDiv3 = document.getElementById(‘div3‘);

    function fn1() {
        alert( this.id );
    }

    /*oDiv1.onclick = fn1;
    oDiv2.onclick = fn1;
    oDiv3.onclick = fn1;*/

    //false = 冒泡(出去)     true = 捕获(进来)

    //告诉div1,如果有一个出去的事件触发了你,你就去执行fn1这个函数
    /*oDiv1.addEventListener(‘click‘, fn1, false);
    oDiv2.addEventListener(‘click‘, fn1, false);
    oDiv3.addEventListener(‘click‘, fn1, false);*/

    //告诉div1,如果有一个进来的事件触发了你,你就去执行fn1这个函数
    /*oDiv1.addEventListener(‘click‘, fn1, true);
    oDiv2.addEventListener(‘click‘, fn1, true);
    oDiv3.addEventListener(‘click‘, fn1, true);*/

    oDiv1.addEventListener(‘click‘, function() {
        alert(1);
    }, false);
    oDiv1.addEventListener(‘click‘, function() {
        alert(3);
    }, true);
    oDiv3.addEventListener(‘click‘, function() {
        alert(2);
    }, false);
    //3 2 1

}
</script>
时间: 2024-11-09 02:17:49

事件捕获 & 事件冒泡的相关文章

Atitit. &#160;Js 冒泡事件阻止&#160;事件捕获&#160;&#160;&#160;事件传递 &#160;事件代理

Atitit.  Js 冒泡事件阻止 事件捕获   事件传递  事件代理   1. 事件冒泡1 2. 事件捕获1 3. 同时支持了事件捕获阶段和事件冒泡阶段ddEventListener的第三个参数1 4. 事件代理3 5. 冒泡还是捕获?3 6. Js 冒泡事件阻止3 6.1. 返回false5 7. 事件冒泡 使处理函数有范围较大的触发面积,在“拖拽效果”脚本中是必须的5 8. refe6 8.1.1. 浅谈事件冒泡与事件捕获 - ac黄博客精选 - SegmentFault6   1. 事

事件捕获、冒泡、绑定、赋值、委托、兼容、滚轮

clientX/Y           可视区的鼠标坐标                  全兼容 offsetX/Y           鼠标坐标到物体边框的距离    IE+Chrome pageX/Y             页面                                    高级 浏览器 screenX/Y           屏幕                                    全兼容(没用) var e =  evt || window.

事件捕获和冒泡

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Monaco; color: #2b7ec3 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Monaco; color: #d74200 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Monaco; color: #4f5d66 } p.p4 { margin: 0

事件捕获 事件冒泡和事件委托

这两天做项目遇到一个bug,寻思良久也找不到解决方案:各种看技术文档才发现是平时忽略的事件捕获,事件委托和事件冒泡的概念出现的问题.遂上网了解了一下相关的内容.以下是我的学习总结. 事件捕获:发生事件时首先在document上,然后依次传递到body,最后到目标节点上: 事件冒泡:指事件到达指点节点后不会结束,会向上一节点冒泡,直到document对象,跟事件捕获相反; 网景公司采用事件捕获方式:即父元素先触发,子元素后触发: IE则是采用事件冒泡方式:子元素先触发然后在触发父元素: W3C则是

Js事件捕获和冒泡

昨天有个面试官问我的问题,他直接问我两个DIV嵌套,都有click事件,单击的时候先弹出子DIV还是父DIV.完全不知所以然. 过后经过查询资料后,很是惭愧.原来他问的就是关于JS捕获和冒泡的. 我查询了一些资料: 事件捕获(父--> 子) 当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发. 事件冒泡(子--> 父) 当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发. W3C模型 W3C模型是将两者进行中和,在W3C模型中,任何事件发生时

javascript事件捕获与冒泡

对“捕获”和“冒泡”这两个概念,我想我们对冒泡更熟悉一些,因为在我们使用的所有浏览器中,都支持事件冒泡,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样.而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播还有个阶段,那就是捕获阶段,这个很少 有用武之地,所以被人疏忽遗忘也在所难免了,不常用不代表它不存在,本着科学严谨的态度,我们有必要去看一下它的庐山真面目. 事实上,捕获阶段是一个和冒泡阶段完全相反的过程,即事件由祖先元素向子元素传播,和一个石子儿从水

js事件捕获和冒泡解析

<div id="box"> <div id="box2"> <p id="test">test</p> </div> </div> <script> document.getElementById('box').addEventListener('click',function () { console.log('box') },true) document.g

js中addEventListener第三个参数涉及到的事件捕获与冒泡

js中,我们可以给一个dom对象添加监听事件,函数就是 addEventListener("click",function(){},true); 很容易理解,第一个参数是事件类型,比如点击(click).触摸(touchstart), 第二个参数就是事件函数, 比如我给一个button添加alert函数. window.onload=function(){ document.getElementById("hello").addEventListener("

你根本不懂Javascript(5): HTML事件捕获与冒泡

本文最初发布于http://szhshp.org转载请注明 事件捕捉与冒泡 先捕获的必然是父节点, 然后一层层向下捕获, 然后一层层向上冒泡 这里是一个td被点击的效果图 通过三个阶段: 捕捉阶段: 从父节点, 逐渐向目标节点冒泡, 即自上向下 接近目标elem阶段(这一阶段会同时激活第一阶段和第三阶段的handler) 冒泡阶段: 从子节点向父节点冒泡 事件绑定机制 onXXX(event) addEventListener(event, handler) jQuery的elem.on(eve

事件冒泡 事件捕获 事件委托

在javascript里,事件委托是很重要的一个东西,事件委托依靠的就是事件冒泡和捕获的机制,我先来解释一下事件冒泡和事件捕获: 事件冒泡会从当前触发的事件目标一级一级往上传递,依次触发,直到document为止.事件捕获会从document开始触发,一级一级往下传递,依次触发,直到真正事件目标为止. 这么说是不是很抽象,其实就像我敲击了一下键盘,我在敲击键盘的同时,我是不是也敲击了这台电脑,我写个例子大家就明白了: <!DOCTYPE html> <html> <head&