`
ezzze
  • 浏览: 41472 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Event delegation

阅读更多
关于event delegation
背景

其实event delegation 是对javascript的事件流的一种算是基础应用吧.....

首先当然要了解javascript的事件流机制,在dom level 2的event model 里有具体解释.....这个自己看吧....这儿

其实就是Event bubbling机制:当document对象接收一个事件,然后在捕获期间找到最具体的事件影响的元素,一旦这个元素绑定这个事件,事件将以冒泡的形式返回到document对象

那么如何应用呢?

应用

还记得addEventListener 里的最后一个参数么?一般我们都传false,这里......呵呵。

我们可以直接用通过一个附加属性来进行事件与事件句柄绑定。

如下:

场景 你需要对某一个列表中的每个元素绑定事件:

var test= {
      init: function() {
         var nav = document.getElementById('nav');
         var links = nav.getElementsByTagName('a');
         for ( var i = 0, j = links.length; i < j; ++i ) {
            if ( links[i].className == 'button' ) {
            links[i].onclick = this.onclick;
         }
      }
     },
     onclick: function() {
           this.href = this.href + '?name=value;
            return true;
      }
}



如果使用event delegation 只需父级节点进行绑定

var test= {
      init: function() {
         var nav = document.getElementById('nav');
        nav.onclick = this.onclick
      }
     },
      onclick: function(e) {
              event = e|| window.event;
 
              //IE uses srcElement as the target
              var target = event.target || event.srcElement;    

              if ( target.className == 'bundle' ) {
                   target.href = target.href + '?name=value';
              }
      return true;
     }
}



好处

1.代码少了,迭代dom的代码少了,重复绑定的代码少了,比如你动态增加节点

2.内存使用少了.......


分享到:
评论

相关推荐

    JavaScript 面试:事件传递机制和事件委托 Event Propagation & Event Delegation - 彭彭直播 at 2020/03/31

    JavaScript_面試_事件傳遞機制和事件委託_Event_Propagation_&_Event_Delegation_-

    剖析Java Event-Delegation Model

    剖析Java Event-Delegation Model,讲得很好,有深度!!

    Getting Started with Twitter Flight

    Chapter 10: Templating and Event Delegation Chapter 11: Web Application Performance Chapter 12: Testing Chapter 13: Complexities of Flight Architecture Appendix: Flight API Reference Book Details ...

    Modular Programming with JavaScript(PACKT,2016)

    Understand the important concepts of OOP in JavaScript, such as scope, objects, inheritance, event delegation, and more Find out how the module design pattern is used in OOP in JavaScript Design and ...

    前端项目-gator.zip

    前端项目-gator,Event delegation in javascript

    event-delegation:浏览器DOM事件的事件委托。 灵活,跨浏览器兼容且以打字稿为重点

    事件委托 浏览器DOM事件的事件委托。 灵活,跨浏览器兼容且以Typescript为重点。 快速链接 安装 CDN ...import EventDelegation from '@jjwesterkamp/event-delegation' EventDelegation命名空间对象

    jQuery事件委托代码实践详解

    在需要为较多的元素绑定事件时应该使用事件委托 event delegation javascript事件传播 html如下: &lt;body&gt; &lt;tr&gt;&lt;td id=targetTd&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt; &lt;/...

    读jQuery之十三 添加事件和删除事件的核心方法

    暂不包含 1, 事件命名空间(event namespace) 2, 事件代理(event delegation) 3, 特殊事件如dom ready 接口如下: 代码如下: E.bind(el, ‘click’, fn); E.bind(el, ‘click’, fn, data); E.unbind(el, ‘click...

    JavaScript事件代理和委托详解

    在javasript中,代理、委托经常出现。 那么它究竟在什么样的情况下使用?它的原理又是什么? 这里介绍一下javascript delegate的用法和原理...这个例子主要取自David Walsh的相关文章(How JavaScript Event Delegation

    JavaScript实现动态创建CSS样式规则方案

    1.我们通过 事件代理(event delegation) 让事件监听更高效, 2.我们利用 函数降频技术(function debouncing) 来限制一段时间内给定方法被调用的次数,请参考:如何防止事件函数的高频触发(中文翻译) 3.我们使用 ...

    JavaScript事件委托的技术原理探讨示例

    如今的JavaScript技术界里最火热的一项技术应该是‘事件委托(event delegation)’了。使用事件委托技术能让你避免对特定的每个节点添加事件监听器;相反,事件监听器是被添加到它们的父元素上。事件监听器会分析从子...

    JavaScript 事件对内存和性能的影响

    事件委托(event delegation):把若干个子节点上的相同事件的处理函数绑定到它的父节点上去,在父节点上统一处理从子节点冒泡上来的事件,这种技术就叫做事件委托。 补充一下:事件委托并不局限于父节点与子节点...

    jbpmName.rar_event_jbpm

    JBPM_DELEGATION 委托表 JBPM_EVENT 事件表 处理进入或者离开事件 JBPM_EXCEPTIONHANDLER 异常处理表 JBPM_ID_GROUP 用户组表 JBPM_ID_MEMBERSHIP 用户成员表 表现用户和组之间的多对多关系 JBPM_ID_...

    Java中事件的详细底层实现

    Java中事件的详细底层实现,剖析Java Event-Delegation Model

    jbpm3.2表说明

    JBPM_DELEGATION JBPM_DELEGATION FK_DELEGATION_PRCD PROCESSDEFINITION_ 一个流程可能存在很多的流程代理类 JBPM_PROCESSINSTANCE JBPM_PROCESSINSTANCE FK_PROCIN_PROCDEF PROCESSDEFINITION_ 一个流程模板可能...

    dom-delegation-stream:与委托一起流式处理dom事件

    var events = require ( 'dom-delegation-stream' ) var values = require ( 'dom-value-stream' ) events ( document . body , 'input' , 'input[type=text]' ) . pipe ( values ( ) ) . pipe ( wherever ( ) ) ...

    JBPM帮助文档供大家学习

    org.jbpm.api.model common process execution model interfaces used in services and delegation interfaces like ActivityBehaviour and EventListener. org.jbpm.api.task interfaces related to the ...

    Reactive Programming with Swift 4-Packt Publishing(2018).epub

    closures for small Async tasks, delegation for background tasks, notification center for event-based tasks, and such. Managing and modifying such a code base might become a headache even if it is ...

    mirage:海市rage楼

    海市age楼-骨干脚手架图书馆 Mirage可让您从描述所涉及数据的单个JSON结构生成整个... selector: ".item", // optional, will be used in delegation callback: function(e) // will be bound to the click event

    JBPM数据库表说明 jbpm 工作流 详细到每一个字段,不要下载分

    1.6 JBPM_DELEGATION:流程代理类表(用于实例化jbpm中的action类) 6 1.7 JBPM_TASK:流程任务表 6 1.8 JBPM_TASKCONTROLLER:流程任务控制器 7 1.9 JBPM_VARIABLEACCESS:流程变量表 7 1.10 JBPM_MODULE...

Global site tag (gtag.js) - Google Analytics