js关于冒泡事件与捕获事件的详解

直接上代码,复制黏贴到你的html页面  点击下看看 立刻明白,根本不用一堆话语来解释

<!DOCTYPE html>
<html>

    <head>
        <title>Bootstrap test</title>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!--<link href="css/bootstrap.min.css" rel="stylesheet">-->

        <!--[if lt IE 9]>
         <script src="js/html5shiv.js"></script>
         <script src="js/respond.min.js"></script>
      <![endif]-->

        <!--<script src="js/jquery-1.12.4.min.js"></script>-->
        <!--<script src="js/bootstrap.min.js"></script>-->
        <style type="text/css">
            /*a {
                background: #cccccc;
                color: white;
                @link-color
            }
            */
            .box {
                width: 300px;
                height: 200px;
                border: 1px solid red;
            }

            .content {
                width: 200px;
                height: 180px;
                border: 1px yellowgreen solid;
            }

            .h11 {
                width: 150px;
                border: 1px blue solid;
            }

            /*@media screen and (max-width:960px) {
                body {
                    background: black
                }
            }*/
        </style>
    </head>

    <body>
        <h1>Hello, world!</h1>
        <div class="container">test</div>
        <div class="box">
            <div class="content">
                <h1 class="h11">woshiH1</h1>
            </div>

        </div>
    </body>

    <script>
//        window.onresize = function() {
//            console.log(document.body.clientWidth);
//        }

        function returnTar() {
            var e = e || window.event;
            var target = e.target || e.srcElement;
            return target.className.toLowerCase();
        }
        var hh = document.getElementsByClassName(‘h11‘)[0];
        var box = document.getElementsByClassName(‘box‘)[0];
        var content = document.getElementsByClassName(‘content‘)[0];
        hh.addEventListener(‘click‘, function() {
            console.log("小 冒泡 target: " + returnTar());
        }, false);
        hh.addEventListener(‘click‘, function() {
            console.log("小 捕获 target: " + returnTar());
        }, true);
        content.addEventListener(‘click‘, function() {
            console.log("中 冒泡 target: " + returnTar());
        }, false);
        content.addEventListener(‘click‘, function() {
            console.log("中 捕获 target: " + returnTar());
        }, true);
        box.addEventListener(‘click‘, function() {
            console.log("大 冒泡 target: " + returnTar());
        }, false);
        box.addEventListener(‘click‘, function() {
            console.log("大 捕获 target: " + returnTar());
        }, true);
    </script>

</html>
时间: 2024-11-07 21:13:26

js关于冒泡事件与捕获事件的详解的相关文章

Js冒泡事件和捕获事件

js中冒泡事件和捕获事件: 冒泡事件:冒泡事件是从里向外,即是从被绑定元素开始一直向外到达页面的所有祖先元素都会被触发,这 一过程被称为事件冒泡.这个事件从原始元素开始一直冒泡到DOM树的最上层 捕获事件:捕获事件是从页面的最上层到被绑定元素都会触发. IE只支持事件冒泡,不支持事件捕获 冒泡事件和捕获事件的方向是相反的. 形式如下图所示: 一般为浏览器中的元素绑定事件有2种方式: 一.直接在页面元素中进行绑定,此方式采用的是冒泡排序,如: <div id="eventExample&qu

js中冒泡事件和捕获事件

js中冒泡事件和捕获事件: 冒泡事件:冒泡事件是从里向外,即是从被绑定元素开始一直向外到达页面的所有祖先元素都会被触发,这 一过程被称为事件冒泡.这个事件从原始元素开始一直冒泡到DOM树的最上层 捕获事件:捕获事件是从页面的最上层到被绑定元素都会触发. IE只支持事件冒泡,不支持事件捕获 冒泡事件和捕获事件的方向是相反的. 形式如下图所示: 一般为浏览器中的元素绑定事件有2种方式: 一.直接在页面元素中进行绑定,此方式采用的是冒泡排序,如: <div id="eventExample&qu

iOS中touches事件,addtarget ...action和GestureRecognizer详解

刚学完uiview,uicontrol类,许多人知道 touchesBegain,touchesMoved,touchesEnd,GestureRecognizer的用途,但仔细考虑这些事件之间的关系,却令人头疼. 现在以一个例子来分析它们的内部实现: - (void)viewDidLoad { UIButton * btn=[[UIButton alloc]initWithFrame:CGRectMake(20, 40, 50, 50)]; [self.view addSubview:btn]

Android View 事件分发机制源码详解(View篇)

前言 在Android View 事件分发机制源码详解(ViewGroup篇)一文中,主要对ViewGroup#dispatchTouchEvent的源码做了相应的解析,其中说到在ViewGroup把事件传递给子View的时候,会调用子View的dispatchTouchEvent,这时分两种情况,如果子View也是一个ViewGroup那么再执行同样的流程继续把事件分发下去,即调用ViewGroup#dispatchTouchEvent:如果子View只是单纯的一个View,那么调用的是Vie

[概念] js的函数节流和throttle和debounce详解

js的函数节流和throttle和debounce详解:同样是实现了一个功能,可能有的效率高,有的效率低,这种现象在高耗能的执行过程中区分就比较明显.本章节一个比较常用的提高性能的方式,通常叫做"函数节流",下面就通过代码实例对此做一下介绍.一.函数节流是什么:在实际编码中,mousemove和resize是使用非常频繁的事件类型(当然还有其他类似事件类型),这样的事件有一个共同的特点,就是在一个普通的操作中,就有可能会在极短的时间内多次执行事件处理函数,会极大的损耗性能,比如resi

js阻止冒泡及jquery阻止事件冒泡示例介绍

js阻止冒泡 在阻止冒泡的过程中,W3C和IE采用的不同的方法,那么我们必须做以下兼容. 复制代码 代码如下: function stopPro(evt){ var e = evt || window.event; //returnValue如果设置了该属性,它的值比事件句柄的返回值优先级高.把这个属性设置为 fasle, //可以取消发生事件的源元素的默认动作. //window.event?e.returnValue = false:e.preventDefault(); window.ev

【C#】事件,委托3点详解

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 事件委托1 { //总结 //1.事件(event)是基于委托(delegate)的,所以想要定义事件,首先要有1个委托类型,做支撑 //2.如果有了事件,要去查找这个事件什么时候被触发,也就是这个事件什么时候被调用了(事件名称();) //3.事件触发的时候,支撑这个事件的委托指向了哪个方法? publi

二十、异常捕获及处理详解

代码中被[]包含的表示可选,|符号分开的表示可选其一. 需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 插入的数据违反唯一约束,导致插入失败 插入或者更新数据超过字段最大长度,导致操作失败 update影响行数和期望结果不一致 遇到上面各种异常情况的时,可能需要我们能够捕获,然后可能需要回滚当前事务. 本文主要围绕异常处理这块做详细的介绍. 此时我们需要使用游标,通过游标的方式来遍历select查询的结果集,然后对每行数据进行处理. 本篇内容 异常分类详解 内部异常详解 外部异常详解

jquery事件之event.target用法详解

1. 定义和用法: 显示哪个 DOM 元素触发了事件: $("p, button, h1, h2").click(function(event){ $("div").html("Triggered by a " + event.target.nodeName + " element."); }); 定义和用法 target 属性规定哪个 DOM 元素触发了该事件. 语法 event.target参数 描述 event 必需.规