面试整理(3)js事件委托】的更多相关文章

JS 事件委托就是利用冒泡原理,把事件加到父级上触发,执行效果. 好处: 1.提高性能 2.新添加的元素还会有之前的事件     <</</</</li></ul>   这样一个HTML结构   我想要给LI增加一个鼠标点击的效果通常写法   window.onload ; i )      }   }}   如果事件委托呢,我会把时间委托给ul  就把for 循环直接改   oUl.onclick )}   接下来我们想写过一个,给LI加一个鼠标经过的效果…
js事件委托也叫事件代理,实际上事件委托就是通过事件冒泡实现的,所谓的事件就是onclick,onmouseover,ondown等等,那么委托呢?委托就是指本来这个事是要你自己做的,但是你却让别人帮你完成这个事,这就叫事件委托. 那么为什么需要事件委托?我们先看一段代码. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&…
http://www.cnblogs.com/liugang-vip/p/5616484.html 不是抄的,这篇文章写的细 这是js 事件委托写法 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>事件获取目标元素</title> <style> li{width: 499px;height:…
原生js事件委托(事件代理)方法扩展: 通过Node底层原型扩展委托方法 /** * 事件委托方法 * @param eventName {string}:事件名称,如'click' * @param sub {string}: 子节点选择器,如'.sub-item' * @param fn {function}: 事件回调方法 * @eg var ctn = document.querySelector('#menu_container'); * ctn.delegate('click','.…
事件委托主要用于一个父容器下面有很多功能相仿的子容器,这时候就需要将子容器的事件监听交给父容器来做.父容器之所以能够帮子容器监听其原理是事件冒泡,对于子容器的点击在冒泡时会被父容器捕获到,然后用e.target来判断到底是哪个子容器触发了事件 示例代码: <html> <head></head> <body> <ul id="myul"> <li>1</li> <li>2</li>…
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件.那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了…
什么是事件委托:通俗的讲,onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 也就是:利用冒泡的原理,把事件加到父级上,触发执行效果. 好处1,提高性能. 先看一个例子:需要触发每个li来改变他们的背景颜色. <ul id="ul"> <li>aaaaaaaa</li> <li>bbbbbbb</li> &l…
一.写在前头    接到某厂电话问什么是事件代理的时候,一开始说addEventListener,然后他说直接绑定新的元素不会报dom不存在的错误吗?然后我就混乱了,我印象中这个方法是可以绑定新节点的.后面才知道,原来他要考察的是事件委托(代理)的原理,他指的是未来还不清楚会创建多少个节点,所以没办法实现给他们注册事件. 二.事件委托(事件代理)的作用? 为了方便理解,我先把事件委托的作用写一下. 支持为同一个DOM元素注册多个同类型事件 可将事件分成事件捕获和事件冒泡机制 例子解析: 注册多个…
参考: jQuery代码优化:事件委托篇 使用该技术能让你避免对特定的每个节点添加事件监听器:相反,事件监听器被添加在他们的父元素上,事件监听器会分析从子元素上冒泡上来的事件,并找到是哪个子元素事件. 现实当中,前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款.(公司也不会容忍那么多员工站在门口就为了等快递); 这种事件委托还有个好处,就是即便公司又来很多员工,前台MM照样可以签收新员工的快递,新员工即便刚来但一样拥有拿自己快件的方法: 通俗来讲: 事件有:oncl…
一. 事件委托什么是事件委托?用现实中的理解就是:有100 个学生同时在某天中午收到快递,但这100 个学生不可能同时站在学校门口等,那么都会委托门卫去收取,然后再逐个交给学生.而在jQuery 中,我们通过事件冒泡的特性,让子元素绑定的事件冒泡到父元素(或祖先元素)上,然后再进行相关处理即可.如果一个企业级应用做报表处理,表格有2000 行,每一行都有一个按钮处理.如果用之前的.bind()处理,那么就需要绑定2000 个事件,就好比2000 个学生同时站在学校门口等快递,不断会堵塞路口,还会…
JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 通过例子类比: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托给前台MM为签收.现实中,我们大都采用委托的方案.前台MM收到快递后,会判断收件人是谁,然后按照收件人的要求签收.这种方案的优势就是无论有多少个新员工要收快递,前台MM都可以代为签收. 这里有两层意思: 第一,现在委托前台的同事是可以代为签收的,即程序中的现有的DOM节…
事件委托(事件代理)原理:简单的说就是将事件交由别人来执行,就是将子元素的事件通过冒泡的形式交由父元素来执行. 为什么要用时间委托? 在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的与dom节点进行交互,访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间 比如我们有100个li,每个li都有相同的click点击事件,可能我们会用for循环的方法,来遍历所有的li,然后给它们添加事件 如果用事件委托,就会将…
js事件绑定 事件绑定,这里使用了冒泡的原理,从点击的元素开始,递归方式的向父元素传播事件,这样做的好处是对于大量要处理的元素,不必为每个元素都绑定事件,只需要在他们的父元素上绑定一次即可,提高性能.还有一个好处就是可以处理动态插入dom中的元素,直接绑定的方式是不行的. 之前一直使用的是jquery的on方法做这样的事情,前几天看到公司项目中有实现这种方式的源代码,拿来仔细研究研究,跟大家分享分享. function $bindAction(dom, event, listeners) { #…
由于事件处理程序可以为现代 Web 应用程序提供交互能力,因此许多开发人员会不分青红皂白地 向页面中添加大量的处理程序. 在创建 GUI 的语言(如 C#)中,为 GUI 中的每个按钮添加一个 onclick 事件处理程序是司空见惯的事,而且这样做也不会导致什么问题. 可是在 JavaScript 中,添加到页面上 的事件处理程序数量将直接关系到页面的整体运行性能.导致这一问题的原因是多方面的.首先,每个 函数都是对象,都会占用内存:内存中的对象越多,性能就越差.其次,必须事先指定所有事件处理程…
给列表元素添加点击事件: 在javaScript中,添加到页面上的事件处理程序的数量,将直接关系到页面的整体运行性能. <li>标签的数量很大时,循环为每个子元素添加事件,绝非好方法. 有一种优雅的方法,就是事件委托. 使用事件委托只为<ul>元素添加一个onclick事件处理程序. 因为有事件冒泡机制,单击每个<li>标签时,都会被这个函数处理. <!DOCTYPE html> <html lang="en"> <he…
1,什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件. 也就是:利用冒泡的原理,把事件加到父级上,触发执行效果. 好处呢:1,提高性能. 我们可以看一个例子:需要触发每个li来改变他们的背景颜色. <ul id="ul"> <li>aaaaaaaa</li> <li>bbbbbbbb&l…
前两天接手了同事的一个项目,是一个网站首页,其中有段代码很累赘,要实现的功能就是, 通过给父元素添加鼠标移入移出事件,来控制子元素显示隐藏. html代码,一共有四个父元素div,每个父元素嵌套一个子元素div, 这是截取了其中一个div: 最简单粗暴的方法莫过于这样: 直接写八个方法,分别设置属性的样式block或者none. 这样写虽然简单,但是出于代码优化,页面响应速度的关系,我们还是需要改动的. 问了问同事,说看看有关事件委托的相关方法,能有效解决这个问题. 经过一顿操作之后,楼主写出了…
一.前言 说实话,真问我什么是事件委托,我肯定gg,还好查了一下,原来就是我之前练习过的DOM2级事件的应用. 二.什么是事件委托? 事件委托就是当事件触发时,把要做的事委托给父元素(或父元素的父元素)来处理.也就是:利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作.使用事件委托技术能让你避免对特定的每个节点添加事件监听器. 三.事件委托作用 1.减少事件注册,节省内存 -table可以代理所有td的click事件 -ul可以代理所有li的click事件 2.能为之后新增…
在开始之前我们先来熟悉一下HTML DOM addEventListener()方法,该方法用于向指定元素添加事件句柄.语法说明如下图所示: 主要想强调一下第三个参数useCapture,默认值为false表示事件冒泡,为true时表示事件捕获. 也就是说可以将事件分成事件捕获和事件冒泡两种机制. 1.事件捕获 当一个事件触发后,从Window对象触发,不断经过下级节点,直到目标节点.在事件到达目标节点之前的过程就是捕获阶段.所有经过的节点,都会触发对应的事件. 2.事件冒泡 当事件到达目标节点…
参考教程地址 https://blog.csdn.net/xiaolong20081/article/details/79792137 不想写了.直接看上面就行 采用事件委托或代理方式绑定 $(document).on("click", ".remove", function(e){ console.log(e); $(this).parent().remove() });     文章来源:刘俊涛的博客 欢迎关注公众号.留言.评论,一起学习. __________…
**看一看,瞧一瞧!** 话说要谈事件委托和target.那我们首先来看看什么是事件.话说什么是事件呢?一般的解释是比较重大.对一定的人群会产生一定影响的事情.而在JavaScript中就不是这样了,事件就是指事情发生了,然后得到有效的处理的操作.为了您能更好的明白,我们来看看以下例子,让你更清楚什么是事件哦! 1.电话铃声响起(事件发生) —需要接电话(事件处理)2.学生举手请教问题(事件发生) —需要解答(事件处理)3.9点半提醒大家开始上课(事件发生)—打开直播开始上课(事件处理)4.按钮…
因为快面试了,打开<JavaScript高级程序设计>,对DOM事件进行整理了下 本文主要解决的问题: 事件流 DOM事件流的三个阶段 先理解流的概念 在现今的JavaScript中随处可见.比如说React中的单向数据流,Node中的流,又或是今天本文所讲的DOM事件流.都是流的一种生动体现.用术语说流是对输入输出设备的抽象.以程序的角度说,流是具有方向的数据. 事件流分事件冒泡与事件捕获 在浏览器发展的过程中,开发团队遇到了一个问题.那就是页面中的哪一部分拥有特定的事件? 可以想象画在一张…
html:部分 <ul> <li>第一个</li> <li>第二个</li> <li>第三个</li> <li>第四个</li> </ul> js部分: var li=$("li");$("ul:eq(0)").click(function(e){ var e = e || window.event; target = e.target || e.…
下面是html 内容: <ul id="oul"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <button id="btn">添加元素</button> 我需要给li 绑定事件,打印点击的内容 let oUl = doc…
var commontop = document.getElementById("commontop");commontop.onclick = function(ev){   var ev = ev || window.event;   var target = ev.target || ev.srcElement;   if(target.className.toLowerCase() == "h5navbox"){      if(h5navcontent.s…
miaov视频教程  http://study.163.com/course/courseMain.htm?courseId=231002 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.or…
js事件冒泡 javascript的事件传播过程中,当事件在一个元素上出发之后,事件会逐级传播给先辈元素,直到document为止,有的浏览器可能到window为止,这就是事件冒泡现象. <div id="col">     <p>         <a id="btn" href="#">button</a>     </p> </div> <script> l…
js事件冒泡 js所谓的事件冒泡就是子级元素的某个事件被触发,它的上级元素的该事件也被递归执行 html: <ul class="clearfix" data-type="cityPick"> <li class="active_sort_opts" data-id="0">全部</li> <li data-id="88">纽约</li> <…
面试题目中,经常会被问到如何阻止默认行为. 以下是<javascript权威指南>书中的内容,详情可以去看书. 能够取消事件默认操作的方法有三种 1.属性注册的事件处理程序的返回值false能用于取消事件的浏览器默认操作: 2.使用addEventListener()的浏览器,可以调用事件对象的preventDefault()取消默认行为: 3.IE9之前的版本的可以设置事件对象的returnValue为false取消默认行为 function cancelHandler(event){ //…
元旦过后,新年第一篇. 初衷:很多的面试都会涉及到事件委托,前前后后也看过好多博文,写的都很不错,写的各有千秋,自己思前想后,为了以后自己的查看,也同时为现在找工作的前端小伙伴提供一个看似更全方位的解读事件委托的地方来认识了解他的原理,本篇文章汇总了两个版本的事件委托:javascript.jquery; 事件委托的定义: 利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 事件委托的优势: 在js中添加到页面上的事件处理程序的个数直接影响到网页的运行性能.因为每个事件处理函数…