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

简介:
<!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>
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5725566.html,如需转载请自行联系原作者

相关文章
|
1月前
|
JavaScript 前端开发
除了点击事件,`addEventListener` 还能用于处理哪些事件类型?
【10月更文挑战第29天】 `addEventListener` 能够处理的事件类型非常丰富,涵盖了各种用户交互和页面状态变化的场景,通过合理地使用这些事件类型,可以为网页或应用程序添加丰富多样的交互效果和功能。
|
1月前
|
JavaScript 前端开发 数据安全/隐私保护
事件捕获
【10月更文挑战第29天】事件捕获作为JavaScript中重要的事件传播机制之一,为开发者提供了一种在事件到达目标元素之前进行处理和控制的方式。通过合理地运用事件捕获,可以实现更灵活、更强大的事件处理逻辑,但同时也需要注意其兼容性、事件顺序和性能等方面的问题,以确保事件处理的正确性和高效性。
|
5月前
|
JavaScript
js 事件流、事件冒泡、事件捕获、阻止事件的传播
js 事件流、事件冒泡、事件捕获、阻止事件的传播
82 1
|
7月前
失焦事件和点击事件
失焦事件和点击事件
46 1
|
7月前
页面监听键盘事件
页面监听键盘事件
|
JavaScript 前端开发
事件冒泡、事件捕获和事件委托
事件冒泡、事件捕获和事件委托
71 0
|
JavaScript 程序员
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
【JavaScript-事件】target和this的区别?如何阻止冒泡事件?常见的鼠标事件和键盘事件有哪些?
163 0
|
JavaScript
13、JS事件(事件绑定、事件流、阻止事件冒泡、取消元素默认行为)
13、JS事件(事件绑定、事件流、阻止事件冒泡、取消元素默认行为)
121 0
|
JavaScript 前端开发
学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象
学习javaScript必知必会(4)~事件、事件绑定、取消事件冒泡、事件对象
158 0
|
JavaScript
事件流、事件捕获和事件冒泡的介绍
事件流、事件捕获和事件冒泡的介绍
132 0