`
ezzze
  • 浏览: 42134 次
  • 性别: 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 #### 前言 本文旨在深入解析Java Event-Delegation Model,特别是自Java 1.1引入以来的事件处理模型。通过理解事件委派机制的核心概念,我们可以更好地掌握Java GUI编程中的...

    前端开源库-eventy.zip

    此外,事件委托(event delegation)是一种优化性能的策略,它允许我们在父元素上设置一个事件监听器,而不是为每个子元素分别设置。如果`eventy`库支持事件委托,那么它可以简化代码并提高性能,尤其是当有大量动态...

    Event

    7. **事件委托(Event Delegation)**:为了高效地处理大量相似元素的事件,可以将事件监听器添加到这些元素的共同祖先上,然后通过事件对象的`target`属性判断真正触发事件的是哪个子元素。 8. **异步编程与事件...

    window对象--event对象详解

    此外,Window对象和Event对象也常常和其他JavaScript特性结合使用,比如事件委托(Event Delegation)、事件修饰符(如`event.preventDefault()`和`event.stopPropagation()`)以及自定义事件等,这些都极大地提高了...

    Node.js-ui-event-observer:提供高性能的方式订阅浏览器UI事件

    1. **事件代理(Event Delegation)**:为了提高性能,ui-event-observer可能会采用事件代理策略。这种方法将事件监听器添加到父元素而不是每个子元素上,通过判断事件冒泡阶段的事件源来处理相应的操作,减少内存...

    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 ...

    javascript 事件

    JavaScript事件还有其他高级特性,如事件委托(Event Delegation),它通过将事件监听器添加到父元素来处理子元素的事件,从而提高性能和代码可维护性。还有事件阻止(Event Stop)方法,如`event.stopPropagation()...

    Extjs源码之--Ext事件机制/继承关系

    4. **事件委托(Event Delegation)**: EXTJS支持事件委托,允许在父级组件上监听子组件的事件,提高性能。例如,可以监听整个容器的'click'事件,然后根据目标组件来处理: ```javascript Ext.container....

    CtrEvent事件委托学习.rar

    在C++编程中,事件委托(Event Delegation)是一种设计模式,它允许对象之间的通信通过事件来实现。这种模式在很多面向对象的编程语言中都有应用,尤其是在UI编程或者组件库设计中。C++虽然没有内置的事件系统,但...

    JavaScript 45 道面试题及答案.docx

    事件代理(Event Delegation),又称之为事件委托。是 JavaScript 中常用绑定事件的常用技巧。顾名思义,“事件代理”即是把原本需要绑定的事件委托给父元素,让父元素担当事件监听的职务。事件代理的原理是 DOM ...

    JavaScript判断按钮被点击的方法

    这样可以更方便地添加和管理多个事件监听器,同时它们通常还提供了一些高级功能,比如事件委托(event delegation)、事件冒泡控制(event bubble control)等。 此外,在学习和使用JavaScript进行事件处理时,我们...

    PDF-WhatIsJavaScriptEvents-英文版.rar

    7. **事件委托(Event Delegation)** - 通过在父元素上设置事件处理程序来处理子元素的事件,可以提高性能并简化代码,尤其是当处理大量动态生成的元素时。 8. **自定义事件(Custom Events)** - 通过`new ...

    java事件传递经典教程.rar

    8. **事件委托(Event Delegation)**:在Swing中,事件委托模型允许组件将事件转发给父组件处理,这样可以减少代码重复,提高代码复用性。 9. **事件处理方法(Event Handling Methods)**:事件监听器接口定义了...

    java与事件前戏

    8. **事件委托模型(Event Delegation Model)**: Swing采用事件委托模型,事件处理可以被委托给父组件,这样可以避免为每个组件添加监听器的繁琐工作。 9. **自定义事件**: 如果预定义的事件类型不足以满足...

    史上最全react面试题总结.pdf下载(超详细,附答案).pdf

    3. **事件代理(Event Delegation)** - 在React中,事件代理由合成事件层自动实现。事件监听器位于最外层,通过事件映射处理组件内部事件。这提高了性能,避免了大量的事件绑定和解绑操作。 4. **高阶组件...

    vu3 事件侦听和抛送模式

    6. **事件委托(Event Delegation)**: `loginIndex.vue`中的事件处理可能涉及到事件委托,这是一种优化策略,允许我们在父元素上监听事件,而不是在每个子元素上单独设置监听器。通过设置事件处理程序在更接近根...

    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 ...

    面试题整理react面试题集合(个人精心收集,值得收藏).pdf

    - React并不直接将事件绑定到DOM元素上,而是采用事件代理(Event Delegation)策略,在`document`级别监听所有事件。 - 当事件冒泡到`document`时,React的合成事件(SyntheticEvent)系统接管,处理事件并调用...

Global site tag (gtag.js) - Google Analytics