zoukankan      html  css  js  c++  java
  • js事件冒泡、事件捕获

    事件冒泡

            var box = document.querySelector('.box');
    	var content = document.querySelector('.content');
    	document.addEventListener('click', function(e) {
    	  console.log('document');
    	}, false);
    	document.body.addEventListener('click', function(e) {
    	  console.log('body');
    	}, false);
    	box.addEventListener('click', function(e) {
    	  console.log('box');
    	}, false);
    	content.addEventListener('click', function(e) {
    	  console.log('content');
    	}, false);
    	    
    

    当我们点击.content时,事件的执行顺序是content - box - body - document。所以事件冒泡的走向是由子节点向父节点去触发同名事件

    ![](https://img2018.cnblogs.com/blog/1244681/201901/1244681-20190115195901517-1837700391.png)

    事件捕获

            var box = document.querySelector('.box');
    	var content = document.querySelector('.content');
    	document.addEventListener('click', function(e) {
    	  console.log('document');
    	}, true);
    	document.body.addEventListener('click', function(e) {
    	  console.log('body');
    	}, true);
    	box.addEventListener('click', function(e) {
    	  console.log('box');
    	}, true);
    	content.addEventListener('click', function(e) {
    	  console.log('content');
    	}, true);
    	    
    

    当我们点击.content时,事件的执行顺序是document - body - box - content。所以事件冒泡的走向是由父节点向子节点去触发同名事件

    ![](https://img2018.cnblogs.com/blog/1244681/201901/1244681-20190115200255130-1428367299.png)

    总结:

    addEventListener('', function(e) {}, false);
    

    第三个参数可控制事件是冒泡还是捕获,js逻辑写法的先后顺序与事件触发的顺序无关

  • 相关阅读:
    文件读取
    命名实体识别训练集汇总(一直更新)
    基于PyTorch的Seq2Seq翻译模型详细注释介绍(一)
    python if elif else 区别
    乱码
    dataframe添加元素指定为列表,不同for循环命名空间下的变量重复问题
    tensorflow兼容处理 tensorflow.compat.v1
    Kerberos
    Hadoop集群datanode磁盘不均衡的解决方案
    Saltstack
  • 原文地址:https://www.cnblogs.com/frogblog/p/10274035.html
Copyright © 2011-2022 走看看