首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js事件委托

概念 事件委托也叫事件代理,事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型所有事件。...动态绑定: 新生dom节点如果用原来方式是无法绑定事件,用委托方式这方面可以轻松实现,保证父元素存在即可。...原理 利用事件冒泡,而冒泡指就是事件从向上传递事件,如果事件有相应函数绑定就会执行其绑定函数。...举例:ul下li元素有绑定事件,我们通过ul绑定委托之后,委托源码部分会在其执行函数内针对事件源进行筛选判定是否符合筛选条件(是否是li),然后针对获取属性或者内容,进行相关操作。...从这里可以看到没有直接针对特定元素绑定事件,而是对事件源进行匹配,所以不存在新生元素无事件问题。

3.2K31

Js 事件委托事件代理)

一、概述 事件委托,又叫事件代理。事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型所有事件。 例子:有三个同事预计会在周一收到快递。...这里其实还有2层意思: 第一,现在委托前台同事是可以代为签收,即程序中现有的dom节点是有事件; 第二,新员工也是可以被前台MM代为签收,即程序中新添加dom节点也是有事件。...二、为什么是使用事件委托 一般来说,dom需要有事件处理程序,我们都会直接给它设事件处理程序就好了,那如果是很多dom需要添加事件处理呢?...,这就是为什么性能优化主要思想之一就是减少DOM操作原因;如果要用事件委托,就会将所有的操作放到js程序里面,与dom操作就只需要交互一次,这样就能大大减少与dom交互次数,提高性能; 每个函数都是一个对象...三、事件委托原理 事件委托利用事件冒泡原理,将事件绑定到父级元素上,当点击子元素时,通过事件冒泡将事件传递到父级元素。  四、总结: 那什么样事件可以用事件委托,什么样事件不可以用呢?

11.4K30
您找到你想要的搜索结果了吗?
是的
没有找到

js事件委托理解 转

今日看下拉列表时用到事件委托,特意在网上搜查了一些资料, http://www.cnblogs.com/liugang-vip/p/5616484.html  这篇文章写很详细,非常感谢作者。...事件委托也叫事件代理,事件委托就是利用事件冒泡,指定一个事件处理程序,就可以管理某一类型所有事件,何为事件冒泡呢,就是从事件最深节点开始,然后逐步向上传播事件,最大优点是提高性能 一般做法 <ul...oLi.innerHTML = 111*num; oUl.appendChild(oLi); }; } 适合用事件委托事件...不适合就有很多了,focus,blur之类,本身就没用冒泡特性,自然就不能用事件委托了。...我理解是:事件委托都是在外围div添加事件,当点击内部一个元素时,即使这个元素没有onclick事件,依然会从内到外执行onclick事件js中外部div 添加事件函数内 var ev = ev

98920

JS篇(007)-事件委托是什么

答案:利用事件冒泡原理,让自己所触发事件,让他父元素代替执行! 解析: 1、那什么样事件可以用事件委托,什么样事件不可以用呢?...- 适合用事件委托事件:click,mousedown,mouseup,keydown,keyup,keypress。...- 不适合就有很多了,举个例子,mousemove,每次都要计算它位置,非常不好把控,在不如说 focus,blur 之类,本身就没用冒泡特性,自然就不用事件委托了。...3、事件冒泡与事件委托对比 - 事件冒泡:box 内部无论是什么元素,点击后都会触发 box 点击事件 - 事件委托:可以对 box 内部元素进行筛选 4、事件委托怎么取索引?... aaaaaaaa 事件委托了 点击当前,如何获取 这个点击下标 cccccccc<

1.7K10

事件委托

事件委托也称事件代理,在jQuery里面就称为事件委派。 事件委托就是把事件监听放在祖先元素(如父元素、爷爷元素)上。...由于事件会在冒泡阶段向上传播到父节点,因此可以把子节点监听函数定义在父节点上,由父节点监听函数统一处理多个子元素事件。这种方法叫做事件代理。...事件委托原理 不是给每个子节点单独设置事件监听器,而是事件监听器设置在其父节点上,然后利事件用冒泡原理影响设置每个子节点 事件委托作用 绑定事件越多,浏览器内存占用越大,严重影响性能 只操作一次DOM...事件委托实现 dianwo dianwo dianwo dianwo dianwo...image.png 事件委托优点: 1.减少事件注册,节省内存。 在table上代理所有tdclick事件。 在ul上代理所有liclick事件。 2.可以监听动态生成元素。

86020

委托事件-委托事件案例(三)

前言   这两天一直在想如何结合实际案例来结束委托事件讲解,下面讲解两个事例,用来加深对委托事件理解。 事例一(分页功能)   本场景是用来讲解使用,具体内容功能需自行填补实现。...用委托事件来实现分页功能通用。按上一节讲解中逻辑处理,分为订阅者和发布者,一样可以先定义订阅者感兴趣对象,然后发布者,订阅者。再就是主程序调用。...public delegate void PageActionEventHandler(object sender, PageChangeEventArgs e); //定义委托类型事件...; } } } 谨记,事件基于委托,为委托提供了一种发布/订阅机制。理解发布订阅机制就会容易多了。一旦理清楚,发现好像也并不是很难。...很快能掌握。 总结   委托事件到这里就大结局了。一些列问题也解决了。心中疑惑也揭开了。下面我们就接着基础系列写其他了。

83320

事件委托

事件委托 1. 基本概念 事件委托,简单来说,就是把一个元素响应事件函数委托到另一个元素。...一般来讲,会把一个或者一组元素事件委托到它父层或者更外层元素上,真正绑定事件是外层元素,当事件响应到需要绑定元素上时,会通过事件冒泡机制从而触发它外层元素绑定事件上,然后在外层元素上去执行函数...前面提到 DOM 中事件委托实现是利用事件冒泡机制,那么事件冒泡是什么呢? 2. 事件传播 事件传播分为三个阶段:「捕获阶段」、「目标阶段」、「冒泡阶段」。...所以事件委托可以减少大量内存消耗,节约效率。 动态绑定事件 比如上述例子中列表项就几个,我们给每个列表项都绑定了事件。...如果用了事件委托就没有这种麻烦了,因为事件是绑定在父层,和目标元素增减是没有关系,执行到目标元素是在真正响应执行事件函数过程中去匹配

84620

JavaScript 事件委托 以及jQuery对事件委托支持

事件监听器分析冒泡事件,去找到匹配子节点元素,然后做出相应事件响应。      事件委托具体是怎么工作呢? 我们从下面的简单例子开始,给大家展示事件委托工作原理。...另外,如果在实际应用中,很有可能同过js在 div1下动态生成p 元素,这时候,我们相应地还要添加事件处理函数,像这种动态添加动作很有可能分散在我们 应用很多个角落,这样动态添加处理函数将是一个非常蛋疼事儿...但是,事件委托也是有缺点: 如果现在dom 元素分为很多很多层,对于底层事件委托,有可能在事件冒泡过程中,中途被某个节点 终止冒泡了,这样事件就传递不到上层,则委托就会失败了。...jquery 对事件委托支持 在jQuery里对事件委托支持,有以下几个函数: ?...如果我们在js中动态地给box1 增加子元素P,相应处理函数也会对其有效。

76460

浅谈JavaScript事件事件委托

需要事先为DOM对象指定事件处理程序,导致访问DOM次数增多,会延迟整个页面的交互就绪时间。 事件委托   对事件处理程序过多解决方案是使用事件委托。...事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型所有事件。...通过元素id,为每个元素执行不同if语句。 并不是所有的事件都适合使用事件委托,比较适用事件是:mouseup、mousedown、click、keyup、keydown和keypress。...虽然mouseover和mouseout也支持事件冒泡,但是如果使用事件委托则处理就比较麻烦,而且需要计算鼠标的位置以及元素位置(当鼠标从一个元素移到其子节点,或者移出元素都会触发mouseout事件...移除事件处理程序   前文已经讲过事件添加以及事件移除。对于页面的事件处理程序太多,会影响页面的性能,除了使用事件委托之外,还可以将一些事件移除。

99670

javaScript事件委托

事件委托:即是,一个事件本来是要绑定到某个元素上,然而却绑定到了该元素父(或祖先)元素上,利用事件冒泡原理,触发执行效果。 二、事件委托优点: 那为什么要使用事件委托?...事件委托有什么好处,以及使用时要注意什么? 事件委托大概有两个优点: 1、提高网页性能。 2、通过事件委托添加事件,对后期生成元素依然有效。 上面提到第二点如何理解呢?...举个例子:现在页面上有个 ul,ul 里有三个 li,通过循环给每个 li 添加点击事件,发现三个 li 到可以正常触发点击事件了,然后通过 js 代码在 ul 里插入(append)两个 li, 再试着点击所有...三、事件委托使用方法: 使用上面 ul 例子进行事件委托给每个 li 绑定事件,示例代码: var ul = document.querySelector("ul"); ul.onclick =...注意:事件代理可能带来隐患,当页面非常复杂情况下,非常容易引起混乱,特别是当多种(个)事件通过事件委托绑定到同一个元素上时。

1K50

jQuery事件委托

在jQuery中,事件委托是一种优化事件处理技术,它利用事件冒泡机制,将事件处理程序绑定到一个父级元素上,从而减少事件处理函数数量,并实现对动态添加子元素事件处理。什么是事件委托?...通过事件委托,我们可以避免为每个子元素都绑定事件处理程序,而是将事件处理集中在父级元素上,从而减少了事件处理函数数量,提高了性能和代码可维护性。为什么使用事件委托?...提高性能:由于事件委托事件处理程序绑定到父级元素上,避免了为每个子元素都绑定事件处理程序开销,从而提高了性能。如何使用事件委托?在jQuery中,我们可以使用on()方法结合选择器来实现事件委托。...通过事件委托,无论是已存在元素还是后续动态添加元素,都会共享同一个事件处理程序,实现了统一事件管理。...事件委托优点和适用场景事件委托有以下优点:减少事件处理函数数量,提高代码可维护性和性能。可以处理动态添加元素,无需手动重新绑定事件处理程序。可以统一管理事件处理程序,使代码更加简洁和易于维护。

1.1K10

JavaScript事件对象与事件委托

事件对象 包含事件相关信息,如鼠标、时间、触发DOM对象等  js默认将事件对象封装好,并自动以参数形式,传递给事件处理函数第1个参数,如下: document.getElementsByTagName...("div")[0].onclick = function(e){   e = window.event || e; //兼容IE低版本(事件对象绑定在windowevent上)   console.log...(e);//这里e就是事件对象 } 事件属性和方法 type:获取事件类型(click、mouseover等等) target:获取发生所在元素(在低版本IE下用srcElement属性) stopPropagation...() 阻止事件冒泡(IE用cancelBubble属性为false阻止冒泡) preventDefault() 阻止事件默认行为(IE用returnValue属性为false阻止默认行为) 事件委托 利用...target属性,获取时间发生所在对象,避免全体子元素加事件,对比如下:  var tbs=document.getElementsByTagName("td"); for(var i=0;i

87750

委托事件-委托详解(一)

前言   说起委托事件,我就想起了再学校时候,当时死记硬背去记什么是委托什么是事件。记得当时蝼某人问我,委托是什么?...在这个例子中都是返回string,都是无参数 委托链(多播委托)   上面我们简单介绍了下委托及其用法,这里我们可以了解一下委托链,顾名思义,委托链也就是委托连续,啥意思呢?...注意,委托链(多播委托)--委托签名必须返回void,否则就只能得到委托调用最后一个方法结果。...,参数也是string类型一个方法 总结   以前总在说委托事件,都没有一次去了解熟悉它,现在得好好巩固一下了。...到这里就介绍完了委托,看上去也挺简单。我们下一节继续看Event事件。然后结合委托一起看看委托事件如何运用

1.1K20

事件委托和this

它将我们从对特定元素事件监听中释放出来,如果没有事件冒泡,我们需要监听很多不同元素来确保捕获到想要事件事件委托 事件委托是一种由其它元素而非事件目标元素来响应事件产生行为思想。...通俗讲,事件就是onclick,onmouseover,onmouseout,等就是事件委托呢,就是让别人来做,这个事件本来是加在某些元素上,然而你却加到别人身上来做,完成这个事件。...有多种方法来处理事件委托。标准方法来源于原生浏览器功能。浏览器以一种特定工作流程来处理事件,并支持事件捕获和事件冒泡。...W3C关于浏览器怎么支持事件文档:W3C DOM Level 3 Events。一些JS库和框架公开了其它方式,如发布/订阅模型(将在后文提及)。...订阅发布模式   还有其它实现事件委托方法可以考虑,其中值得一提就是发布/订阅模型。发布/订阅模型也称为了广播模型,牵涉到两个参与者。

77730

委托事件

假设我们将GreetingPeople()放在一个叫GreetingManager类中,那么新程序应该是这个样子: namespace Delegate {        //定义委托,它定义了可以代表方法类型...程序一如预料地那样输出了: Morning, Jimmy Zhang 早上好, 张子阳 现在,假设我们需要使用上一节学到知识,将多个方法绑定到同一个委托变量,该如何做呢?...让我们再次改写代码: 输出: Morning, Jimmy Zhang 早上好, Jimmy Zhang 到了这里,我们不禁想到:面向对象设计,讲究是对象封装,既然可以声明委托类型变量(在上例中是...此时,轮到Event出场了,C# 中可以使用事件来专门完成这项工作,我们改写GreetingManager类,它变成了这个样子: 很容易注意到:MakeGreet 事件声明与之前委托变量delegate1...看到这里,你差不多明白到:事件其实没什么不好理解,声明一个事件不过类似于声明一个委托类型变量而已。

63020

委托事件

1、面向对象:.net把委托(函数指针)定义为类型,具体类名为委托名称,并且存在继承关系:自定义委托<--System.MulticastDelegate<--System.Delegate。   ...从上面可以看出委托实例中不仅保存了函数地址,还保存了函数所在类实例,相反看一下C++函数指针只是保存函数地址,而不管实例函数属于哪一个类。   ...事件                                  事件委托有许多相似之处,经常不知道使用哪一个,这里着重说明两者区别。...委托对象定义为public后不仅所属类内部能调用,类外部也能调用;事件不管即使定义为public,也只能在所属类内部触发,而类外部只能订阅不能触发事件。...总结                                使用事件可以降低耦合度,事件触发与事件订阅分离,让感兴趣对象订阅某个对象全部或部分事件

84260
领券