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逻辑写法的先后顺序与事件触发的顺序无关

  • 相关阅读:
    E. Paired Payment 题解(多维最短路)
    九峰与子序列 题解(dp+hash)
    魏迟燕的自走棋 题解(并查集+思维)
    unix学习资料
    Tomcat > Cannot create a server using the selected type
    myeclipse使用hibernate正向工程和逆向工程
    jira的破解
    jsp:useBean用法
    java一个多线程的经典例子
    head first系列PDF资源
  • 原文地址:https://www.cnblogs.com/frogblog/p/10274035.html
Copyright © 2011-2022 走看看