事件绑定通常发生在 onload 或 DOMContentReady , 事件绑定占用 处理时间 占用内存, 而且不是每个事件都会被 点击执行。

由此 事件委托 可以优化事件绑定行为、。

事件逐层冒泡 直到被父级元素捕获。 事件代理  给外层元素绑定一个处理事件, 就可以处理子元素上出发所有事件。

DOM 标准 事件三个阶段:

捕获

到达目标、

冒泡

IE 不支持捕获, 但冒泡够用了。

event.currentTarget 事件处理程序当前正在处理事件的那个元素

event.target 事件真正的目标

event.type 出发事件类型 // click mouseover mouseout

this 始终等于currentTarget, 而 target 则只包含事件的 实际目标

var btn = document.getElementById('myBtn');

btn.onclick = function ( event ) {

    alert( event.currentTarget === this );  //true

    alert( event.target == this  );  // true

}

//如果事件处理程序 存在 按钮的父节点中  这些值 不同

document.body.onclick = function ( event ) {

  alert( event.currentTarget === document.body ); // true;

  alert( this === document.body );// true

  alert( event.target === document.getElementById( 'myBtn') ); //true;

}

例如:

<body>

<div> <a href="">btn</a></div>

<div> <a href="" id="doSomething">btn</a></div>

<div> <a href="" id="goWhere">btn</a></div>

</body>

-----------------------------------------------

document.getElementByTagName('body').onclick = function (e) {

  //浏览器 target

e = e || window.event;

var target = e.target || e.srcElement;

   if ( target.nodeName !== 'A'){ return;  }

  if (target.id == 'doSomething') {

    alert('doSomething');

} else if (target.id == 'goWhere') {

    alert('goWhere');

  } else {

    alert('other A click');

  }

  if (typeof e.preventDefault === 'function') {

    e.preventDefault();

    e.stopPropagation();

} else {

    e.returnValue = false;//IE 默认true false 取消事件的默认行为

e.cancelBubble = true;//IE 默认false, 但设置true 可以取消事件冒泡

  }

}

javaScript绑定事件委托 demo的更多相关文章

  1. JavaScript绑定事件的方法[3种]

    在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数. 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HT ...

  2. javascript使用事件委托

    事件委托是javascript中一个很重要的概念,其基本思路就是利用了事件冒泡的机制,给上级(父级)元素触发事件的dom对象上绑定一个处理函数.在当有需要很多dom对象要绑定事件的情况下,可以使用事件 ...

  3. JavaScript / JQuery事件委托如何实现?

    一:什么是事件委托? 事件委托是利用事件冒泡,只指定一个事件处理程序来管理某一类型的所有事件. 事件委托就是利用事件冒泡原理实现的! 事件冒泡:就是事件从最深节点开始,然后逐步向上传播事件: 例:页面 ...

  4. JavaScript之事件委托(附原生js和jQuery代码)

    事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作. 使用事件委托的优点 1.操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作 dom结 ...

  5. JavaScript中事件委托(事件代理)详解

    在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托 ...

  6. JavaScript, JQuery事件委托

    1.引言 现实当中,前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款.(公司也不会容忍那么多员工站在门口就为了等快递); 这种事件委托还有个好处,就是即便公司又来很多员工 ...

  7. Javascript绑定事件的两种方式的区别

    命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...

  8. day51—JavaScript绑定事件

    转换学开发,代码100天——2018-05-06 今天学习JavaScript的绑定事件.因为浏览器的原因绑定事件需要考虑兼容性问题. attachEvent     IE浏览器 ,ie9以上事件执行 ...

  9. Javascript的事件委托

    在谈js的事件委托之前,先来简单说说js事件的一些基础知识吧. 什么是事件?Javascipt与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器中发生的一些特定的交互瞬间. 什么是事件流?事 ...

随机推荐

  1. jquery在Asp.net下实现ajax

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AjaxTest ...

  2. 百叶窗特效(用move.js库)

    每逢佳节胖三斤啊,胖了胖了,加上每天坐在电脑前,现在还和一个智障聊天,后天去苏州玩的事情,住哪里啊?去哪里嘿嘿嘿啊? 苏州,找了下,攻略,听说一定要去园林看,听说很牛逼,好吧,陶冶一下我的情操.今天操 ...

  3. session工作原理简介

    session是什么 首先,我们需要知道session是什么.有比较专业的人将session称之为会话控制.说实在的,如果这么说的话,我也不清楚session到底算是什么. 其实session是一个存 ...

  4. php小测试,难点与分享

    B/S(网页程序) 网页结构,依托游览器 C/S(客户端程序) 单引号和双引号包含字符串的区别: 双引号里面可以解析变量,比如: $a=555; echo "你好{$a}"; 输出 ...

  5. LAMP学习小记

    记录今天学习到的解决LAMP环境搭建的两个小问题: 问题1.xshell无法连接到虚拟机上的linux主机 解决方法: (1)进入网络配置文件: vi /etc/sysconfig/network-s ...

  6. Android 获取浏览器当前分享页面的截屏

    Android 获取浏览器当前分享页面的截屏 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/BrowserScreenShotActivity 文中 ...

  7. Python爬虫爬取qq视频等动态网页全代码

    环境:py3.4.4 32位 需要插件:selenium BeautifulSoup xlwt # coding = utf-8 from selenium import webdriverfrom ...

  8. RadAsm使用

    RadASM 命令行语法 DelCheck,Out,Command,F1[,F2[,Fx]]   DelCheck   执行命令前要清除的文件,不使用时设为0  Out      一般指定为O,所有信 ...

  9. 测试工作中ADB命令实战

    作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...

  10. UU农场平台开发 UU农场拆复利系统

    UU农场平台开发 UU农场拆复利系统今年比较新的一款游戏,类似于QQ农场,但又加入了很多新型的互联网理财模式!UU农场平台开发 UU农场拆复利系统.UU农场开发.UU农场游戏平台开发.UU农场平台开发 ...