事件捕获,事件冒泡,事件取消

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
div {padding: 50px;}
#div1 {background: red;}
#div2 {background: blue;}
#div3 {background: green; position: absolute; top: 300px;}
</style>
<script>
window.onload = function() {
    var oDiv1 = document.getElementById(‘div1‘);
    var oDiv2 = document.getElementById(‘div2‘);
    var oDiv3 = document.getElementById(‘div3‘);
    function fn1() {
        alert( this.id );
    }
    //依次执行321
    oDiv1.onclick = fn1;
    oDiv2.onclick = fn1;
    oDiv3.onclick = fn1;

    //false表示冒泡
    //告诉div1,如果有一个      出去        的事件触发了你,你就去执行fn1这个函数,先执行3最后执行1。
    oDiv1.addEventListener(‘click‘, fn1, false);
    oDiv2.addEventListener(‘click‘, fn1, false);
    oDiv3.addEventListener(‘click‘, fn1, false);

    //告诉div1,如果有一个       进去     的事件触发了你,你就去执行fn1这个函数,先执行1最后执行3。
    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);
    //执行321

}
</script>
</head>

<body>
点击div3时,进来的点击事件(事件捕获)从1到3,出去的点击事件(事件冒泡)从3到1.每个div经历2个点击事件。
    <div id="div1">
        <div id="div2">
            <div id="div3"></div>
        </div>
    </div>
</body>
</html>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<script>
/*
第一种事件绑定形式的取消
*/
function fn1() {
    alert(1);
}
function fn2() {
    alert(2);
}

document.onclick = fn1;
document.onclick = null;    //取消,如果是通过attachEvent实现的绑定则不能这么取消。

/*
ie : obj.detachEvent(事件名称,事件函数);
标准 : obj.removeEventListener(事件名称,事件函数,是否捕获);
*/
document.attachEvent(‘onclick‘, fn1);
document.attachEvent(‘onclick‘, fn2);
document.detachEvent(‘onclick‘, fn1);

document.addEventListener(‘click‘, fn1, false);//绑定出去的函数
document.addEventListener(‘click‘, fn1, true);//绑定进来的函数
document.addEventListener(‘click‘, fn2, false);

document.removeEventListener(‘click‘, fn1, false);//取消出去的函数
</script>
</head>

<body>
</body>
</html>
时间: 2024-11-07 03:48:30

事件捕获,事件冒泡,事件取消的相关文章

Js事件捕获和冒泡

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

事件流(事件冒泡、事件捕获和DOM事件流)

事件流是用来描述html页面中接收事件的顺序的. IE给出的顺序叫做事件冒泡. Netscape给出的顺序叫做事件捕获. <!Doctype> <html> <body> <div id="btn">Click me</div> </body> </html> 事件冒泡正如其名,向鱼类吐泡泡一样.当点击上面div时,最先接收到click事件的是div元素本身.因为它是文本中当前所交互的元素里嵌套最深的那

简单总结焦点事件、Event事件对象、冒泡事件

每学习一些新的东西,要学会复习,总结和记录. 今天来简单总结一下学到的几个事件:焦点事件.Event事件对象.冒泡事件 其实这几个事件应该往深的说是挺难的,但今天主要是以一个小菜的角度去尝试理解一些基本的知识点. 1.焦点事件: 1.1概念理解: 想象场景:当一堆text文本框出现在面前,当点击其中一个文本框,它就会响应用户,并出现光标闪动(这时,点击令它获得焦点). 所以说:焦点事件是用来让浏览器区分哪一个对象是用户要进行操作(输入值.选择.跳转)的. 总结===>  浏览器(区分)哪一个对象

DOM2级事件对象、添加事件、阻止默认事件、阻止冒泡事件、获取事件对象目标的兼容处理

事件对象——兼容处理 1 /* 2 * 功能: 事件对象兼容 3 * 参数: 表示常规浏览器的事件对象e 4 */ 5 function getEvent(e) { 6 7 // 如果存在e存在,直接返回,否则返回window.event 8 return e || window.event; 9 } 获取事件所对应的目标——兼容处理 1 /* 2 3 * 功能: 获取事件所对应的目标 4 5 * 参数: 表示常规浏览器的事件对象e 6 7 */ 8 9 function getTargetBy

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

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

javascript事件捕获与冒泡

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

事件捕获和冒泡

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

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