js的事件冒泡和事件捕获

一、定义

事件捕获:从document到触发事件的那个节点,自上而下触发事件;

事件冒泡:从触发事件节点依次向上触发事件,直到document。

原声js中,绑定事件方法addEventListener(eventName,function,bool)的第三个参数控制事件触发顺序。true为捕获,false为冒泡,默认冒泡。

event.stopPropagation()会阻止事件流的传播。

二、实例

html结构:

<div id=‘parent‘>
        <div id=‘child‘>
        </div>
 </div>

给div绑定事件:

1.冒泡过程

parent.addEventListener(‘click‘, function(){
    console.log(‘parent‘);
},false);
child.addEventListener(‘click‘, function(){
    console.log(‘child‘);
},false);
body.addEventListener(‘click‘, function(){
    console.log(‘body‘);
},false);

结果如下:

2.捕获过程

parent.addEventListener(‘click‘, function(){
    console.log(‘parent‘);
},true);
child.addEventListener(‘click‘, function(){
    console.log(‘child‘);
},true);
body.addEventListener(‘click‘, function(){
    console.log(‘body‘);
},true);

结果如下:

三、应用

1.事件委托:利用事件冒泡处理动态元素事件绑定的方法。

<div id=‘parent‘>
        <div class=‘child‘></div>
        <div class=‘child‘></div>
        <div class=‘child‘></div>
    </div>

如果要给class为child的div绑定动态事件,使用冒泡则效率最高:

parent.addEventListener(‘mousemove‘, function(event){
        var tDiv =event.target;
        if ($(tDiv).hasClass(‘child‘)) {
           $(tDiv).css(‘background‘, ‘red‘).siblings().css(‘background‘, ‘green‘);
        }
        return false;
    },false);

2.结合stopPropagation和冒泡、捕获可以阻止某个元素上的特定事件

时间: 2024-10-27 07:53:09

js的事件冒泡和事件捕获的相关文章

JS事件(事件冒泡和事件捕获)

事件流:描述的是在页面中接收事件的顺序 事件冒泡:由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点(文档) 事件捕获:最不具体的节点先接收事件,而最具体的节点应该是最后接收事件 DOM中:用于处理指定和删除事件处理程序的操作addEventListener()和removeEventListener().他们都接收三个参数:要处理的事件名.作为事件处理程序的函数和布尔值(事件处理的时候)[true:事件捕获时;false:事件冒泡时] DOM中的事件对象: type属性 用于获取事件类

js 事件冒泡与事件捕获

一.事件冒泡 事件冒泡是指在事件发生过程中先从目标节点开始执行,并一层一层的相父节点依次查询直到document,并执行相同事件的过程. btn1.addEventListener('click',function(e){ //true 为事件捕获,false 为事件冒泡 //false为默认方式,冒泡方式执行 //点击btn1时,如果是事件冒泡,则先执行btn1上的click事件,然后执行父元素div1上的click事件 //如果是事件捕获,则先执行父元素上的click事件,然后执行btn1上

JS中的事件绑定,事件捕获,事件冒泡以及事件委托,兼容IE

转载请注明出处:http://www.cnblogs.com/zhangmingze/p/4864367.html ● 事件分为三个阶段:   事件捕获 -->  事件目标 -->  事件冒泡 ● 事件捕获:事件发生时(onclick,onmouseover--)首先发生在document上,然后依次传递给body.……最后到达目的节点(即事件目标). ● 事件冒泡:事件到达事件目标之后不会结束,会逐层向上冒泡,直至document对象,跟事件捕获相反 1.onlick -->事件冒泡,

彻底弄懂JS的事件冒泡和事件捕获

先上结论:在事件执行流中有两种执行方式.一种是事件冒泡(即事件的执行顺序是从下往上执行的) ;  另一种是捕获(即事件的执行顺序是从上往下执行的); 阻止事件冒泡:   return false;  火狐/ie都支持 function(even){ var ev=even||window.even; if(ev&&ev.stopPropagation){ ev.stopPropagation(); }else{ window.event.cancelBubble=true; } } 这是H

看懂此文,不再困惑于javascript中的事件绑定、事件冒泡、事件捕获和事件执行顺序

最近一个项目基于3维skyline平台,进行javascript二次开发.对skyline事件的设计真是无语至极,不堪折磨啊!抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享. (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式:在html文档中绑定.在js代码中绑定.下面的方式1.方式2属于在html中绑定事件,方式3.方式4和方式5属于在js代码中绑定事件,其中方法5是最推荐的做法. 方式1: HTML的DOM元素

javascript事件之: 事件冒泡, 事件捕获 ,阻止默认事件

谈起JavaScript的 事件,事件冒泡.事件捕获.阻止默认事件这三个话题,无论是面试还是在平时的工作中,都很难避免. 冒泡篇: 先来看一段实例: js: var $input = document.getElementsByTagName("input")[0]; var $div = document.getElementsByTagName("div")[0]; var $body = document.getElementsByTagName("

前端-【学习心得】-聊一聊事件冒泡和事件捕获

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Examples</title> <meta name="description" conte

事件流:事件冒泡和事件捕获

事件流:事件冒泡和事件捕获 1. 两者概念 事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件., element.addEventListener(event,function(),false); 事件冒泡是自下而上的去触发事件.绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获. element.addEventListener(event,function(),true); 从上面可知,第三个参数为true或者false; true,事件捕获: fals

聊聊事件冒泡与事件捕获

什么是事件? 事件是文档和浏览器窗口中发生的特定的交互瞬间. 什么是事件流: 事件流描述的是从页面中接受事件的顺序( 说白了就是解决页面中事件流发生顺序的问题.),但有意思的是,微软(IE)和网景(Netscape)开发团队居然提出了两个截然相反的事件流概念,IE的事件流是事件冒泡流(event bubbling),而Netscape的事件流是事件捕获流(event capturing). 让我们先聊聊DOM0级事件与DOM2级事件 DOM0 直接通过 onclick写在html里面的事件, 比

事件流 事件冒泡和事件捕获

事件冒泡和事件捕获 他们是描述事件触发时序问题的术语. DOM标准规定事件流包括三个阶段:事件捕获阶段.处于目标阶段和事件冒泡阶段.捕获型事件流:事件的传播是从最不特定的事件目标到最特定的事件目标.即从外部到内部. 冒泡型事件流:事件的传播是从最特定的事件目标到最不特定的事件目标.即从内部到外部 事件冒泡 <body> <div class="parent"> <div class="son"> <div class=&qu