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

JavaScript-事件委托(事件代理

今天给自己的知识结构填个坑,再复习下JS的事件代理事件代理可以给JS批量生成的DOM元素添加事件,并且还可以提高效率,因为你确实不用给每个DOM节点添加事件监听了。...事件的监听器,是被添加到了它们的父元素上,监听器会分析从新生成的子元素上冒泡上来的事件,并找到是哪个子元素的事件。...id="li-4">li 4 li 5 li 6 那么,当每个子元素被点击的时候,会发生不同的事件...那么这时,你需要把事件监听器放在它们的父容器 ulId 上面。 这时,当子元素被点击的事件,冒泡到父元素Li上的时候,你就可以通过检查事实的target,从而获取真正被点击的节点元素的引用。...现在大部分JS都会使用jQuery等工具库来处理DOM事件,但对于事件委托的背后原理,我们还是要了解的。 浅谈数据结构 - 字典

882100

【前端】详解JavaScript事件代理事件委托)

前言 事件代理(Event Delegation),又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。...顾名思义,“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown…)委托给父元素,让父元素担当事件监听的职务。 事件代理的原理是DOM元素的事件冒泡。...一、事件冒泡 在JavaScript编程中,事件代理(Event Delegation)是一种将事件监听器应用于一个父元素,而不是直接应用于每一个子元素的技术。...本文将详细介绍事件代理的概念、原理、使用场景、代码示例以及注意事项。 所以在了解事件代理之前,我们需要知道什么是事件冒泡(Event Bubbling)。...事件代理即是利用事件冒泡的机制把里层所需要响应的事件绑定到外层; 事件代理利用了事件冒泡的原理。通过在父元素上设置监听器,可以捕获到在其子元素上触发的事件

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

    JavaScript事件代理和委托(Delegation)

    JavaScript事件代理 首先介绍一下JavaScript事件代理事件代理在JS世界中一个非常有用也很有趣的功能。...当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委托给父节点来触发处理函数。这主要得益于浏览器的事件冒泡机制。...更简单的方法是使用事件代理机制,当事件被抛到更上层的父节点的时候,我们通过检查事件的目标对象(target)来判断并获取事件源Li。...下面的代码可以完成我们想要的效果 //事件代理 var ulNode=document.getElementById('parent-list');//父亲节点对象 ulNode.addEventListener...,布尔值false 三:为父节点添加一个click事件,当子节点被点击的时候,click事件会从子节点开始向上冒泡。

    59010

    JavaScript第十一弹——事件流!事件代理!我懂了!

    今天要和大家聊一聊事件!先给大家送上几个小概念: 事件事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。JavaScript与HTML之间的交互是通过事件实现的。...首先事件捕获,为截获事件提供机会,然后是目标接收到事件,最后则是冒泡阶段,事件在这个阶段做出响应, 2 事件流的应用——事件代理 了解了什么事件流,大家一定会想,我要把这个东西放在哪里用呢?...:假如说在一个ul中包含了n个li,要想给li添加事件,我们要怎样做呢?循环遍历获取li标签吗?这里我们就可以利用我们的事件流,给父级标签ul绑定事件。这就是事件代理!...事件代理就是通过冒泡原理实现的,像这个例子中,给ul绑定事件,那么ul的子标签li做事件的时候就会冒泡到ul上触发事件 rabbit...3)DOM3: 新增一些新事件。 好啦,今天的事件到这里就结束啦,我们先白话了事件流,还记得事件代理吗,后面又介绍了DOM的好几个版本。

    43720

    深入理解JavaScript中的事件委托与事件代理

    JavaScript的开发中,事件处理是构建动态、交互式逻辑的关键。...事件委托和事件代理,作为高效的事件处理策略,不仅优化了性能,还提升了代码的可维护性事件委托与事件代理的基础概念事件委托是将事件处理程序添加到一个父元素上,利用事件冒泡的机制来处理子元素的事件。...当子元素上发生特定事件时,事件会冒泡到父元素,然后由父元素上的事件处理程序来处理。事件代理则更侧重于将事件处理的逻辑委托给一个中间的代理对象或函数。...事件捕获阶段限制:事件代理主要利用了事件冒泡机制,这意味着只有在事件冒泡阶段才能被捕获。对于那些不支持冒泡的事件(如focus和blur),事件代理可能不适用。...动态事件处理:对于动态添加到DOM中的元素,事件代理可以很好地工作。但如果事件处理程序需要在元素被添加到DOM之后立即触发,事件代理可能无法满足这种需求。

    12431

    Js 事件委托(事件代理

    一、概述 事件委托,又叫事件代理事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 例子:有三个同事预计会在周一收到快递。...二、为什么是使用事件委托 一般来说,dom需要有事件处理程序,我们都会直接给它设事件处理程序就好了,那如果是很多的dom需要添加事件处理呢?...在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的与dom节点进行交互,访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间...三、事件委托原理 事件委托利用的是事件冒泡原理,将事件绑定到父级元素上,当点击子元素时,通过事件冒泡将事件传递到父级元素。  四、总结: 那什么样的事件可以用事件委托,什么样的事件不可以用呢?...适合用事件委托的事件:click,mousedown,mouseup,keydown,keyup,keypress。

    11.4K30

    JavaScript事件

    JavaScript事件 事件机制: 在用户使用键盘、鼠标等设备进行操作时,实际上每一次的操作都是在发起一个事件。...以上提到的事件只是众多事件类型中的一种点击事件事件是有很多种类型的,例如:鼠标的单击、双击、滚轴,键盘的按键弹起、按下、长按等等,反正很多就是了,还有一些是某些元素特有的事件。...接下来开始介绍JavaScript中给元素委托事件的三种常用的方式: 第一种方式,写好函数代码后,通过元素中的事件属性进行委托,下面用鼠标事件中的mouseout和mouseover事件进行演示,mousseout...事件源 Even: 事件源,就是事件产生时的信息收集,可以通过事件源对象获得很多相关数据,可以设置元素的属性,以下是常见的事件源对象属性: ? ?...以上只使用到了鼠标事件中的mouseout和mouseover事件事件还有很多,以下是常见事件的分类思维导图: ?

    1.6K20

    jQuery事件代理

    事件代理介绍 事件代理就是利用事件冒泡的原理(事件冒泡就是事件会向它的父级一级一级传递),把事件加到父级上,通过判断事件来源,执行相应的子元素的操作,事件代理首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作...事件代理的使用 一般绑定事件的写法: $(function(){ $ali = $('#list li'); $ali.click(function() { $(this...}) 1 2 3 4 5 事件代理的写法...$(function(){ $list = $('#list'); // 父元素ul 来代理 子元素li的点击事件 $list.delegate('li', 'click',...小结 事件代理就是使用父元素来代理子元素的事件,好处是减少事件的绑定次数,提高性能。 使用场景当多个相同的子元素绑定同一个事件,可以

    30K75

    JavaScript 事件

    HTML 事件是发生在 HTML 元素上的事情。 当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。...在事件触发时 JavaScript 可以执行一些代码。 HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素。... JavaScript代码通常是几行代码。比较常见的是通过事件属性来调用: 现在的时间是?...HTML元素上移动鼠标 onmouseout 用户从一个HTML元素上移开鼠标 onkeydown 用户按下键盘按键 onload 浏览器已完成页面的加载 更多事件列表: JavaScript 参考手册...可以使用多种方法来执行 JavaScript 事件代码: HTML 事件属性可以直接执行 JavaScript 代码 HTML 事件属性可以调用 JavaScript 函数 你可以为 HTML 元素指定自己的事件处理程序

    73330

    JavaScript事件

    JavaScript事件 对于事件来讲,首先,我们需要了解这样几个概念:事件事件处理程序;事件类型;事件流;事件冒泡;事件捕获;事件对象;事件模拟,事件方面的性能优化(事件委托、移除事件处理程序);...,也可以使用JavaScript中内部的函数。...还可以直接使用JavaScript的代码等。...事件模拟是javascript事件机制中相当有用的功能,理解事件模拟与善用事件模拟是判别一个前端的重要依据,事件一般是由用户操作触发,其实javascript也是可以触发的,比较重要的是,javascript...谈一谈事件方面如何优化性能——事件委托和事件处理程序的移除 在JavaScript代码当中,添加到页面中的事件越多,页面的性能也就越差。

    2K60

    JavaScript代理模式

    代理模式的定义,代理是一个对象(proxy)用它来控制目标对象的访问。为此他要是先与目标对象相同的接口,但是他不同于装饰者模式,它对目标对象不进行任何修改,它的目的在于延缓"复杂"对象的初始化时间。...代理模式有两种分类: (1)普通代理 (2)惰性代理 具体看下面的例子 第一,普通代理模式 步骤一,接口检验文件的引用 //定义一个静态方法来实现接口与实现类的直接检验 //静态方法不要写出Interface.prototype...,我们可以看出代理中对目标对象的引用是一次性初始化的,然后再在该基础上实现其他操作 如图:目标类和代理同时实现了同一接口。...代理中一次性对目标类进行实例,然后值访问到目标类中的方法。 ? 总结,这个代理是我们严格安装定义来写的,一般开发中不会用到,应为他没什么意义。...第二种,惰性代理----在使用时才对目标类进行初始化再引用。

    27140

    JavaScript事件

    javascript与HTML之间的交互是通过事件实现的。事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。...DOM事件流 “DOM2级事件”规定了事件流包括三个阶段:事件捕获阶段,处理目标阶段和事件冒泡阶段。首先发生的是事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后是事件冒泡。...HTML事件处理程序 某个元素支持的每种事件,都可以使用一个与相应事件处理程序同名的HTML特性来指定。这个特性的值应该是能够执行的JavaScript代码。...="button" value="clickMe" onclick = "showMsg()"> function showMsg(){...3)HTML与JavaScript代码紧密耦合。 2. DOM0级事件处理程序 通过javascript制定事件处理程序的传统方式,将一个函数赋值给一个事件处理程序属性。

    1.4K30

    javascript事件循环

    JavaScript事件循环 JavaScript单线程 JavaScript 从一开始被创造出来就使用的单线程,这主要与他的用途相关。...引擎线程:JavaScript同步任务、回调任务执行的场所,JavaScript程序调度中心 事件触发线程:存放任务队列的场所,异步任务完成以后触发的事件都会存放到这个线程中,这个线程中存在多个任务队列...当JavaScript执行栈处于空闲的状态时,主线程就会主动去查看事件队列是否存在未处理的事件。...(图片来自https://vimeo.com/96425312) 任务 前面只是讲述了浏览器JavaScript event loop过程,以及提及到有一个事件队列来存放这些触发的事件。...前端发展史 栗子来源 从HTML5与PromiseA+规范看事件循环 JavaScript 异步、栈、事件循环、任务队列 Node.js Event Loop 的理解 Timers,process.nextTick

    1.2K20
    领券