下面举个例子

我们希望通过点击使得点击的li标签变红

<body style="height:2000px;">
<ul>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
</ul>
</body>

普通写法

$(function(){
$('li').on('click',function(){
$(this).css('background','red');
});
});

事件委托写法

$(function(){
$('ul').delegate('li','click',function(ev){
$(this).css('background','red');
});
});

我们发现以上两种方法都可以使所点击的li标签变红,效果上没有区别, 
但是普通写法on是将事件加到li标签上面, 
而事件委托delegate写法事件并没有加到li上面,而是加到了ul的上面,是$(this)触发的时候指向了li;利用了冒泡原理。

事件委托的好处: 
1、原本需要给多个元素添加,现在只需要给一个元素添加,性能上比较好些。 
2、对后续创建生成的元素可以直接操作,而on事件不可用。

例如: 
当点击按钮的时候,想ul里面创建一个li标签

<body style="height:2000px;">
<input id="input1" type="button" value="添加">
<ul>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
</ul>
</body>
$(function(){

    $('li').on('click',function(){
$(this).css('background','red');
});//对于新创建添加的li标签点击无变化 $('ul').delegate('li','click',function(ev){
$(this).css('background','red');
//$(ev.delegateTarget).css('background','red'); //委托对象ul
$(ev.delegateTarget).undelegate();//取消委托
});//新创建添加的li标签也可以变红
//原因在于事件原本就不在li上面,新创建的和原本有的没有区别,真正的事件是在ul身上,只要ul不变,ul里面元素的事件都是可以触发的 $('#input1').click(function(){
var $li = $('<li>hello</li>');//创建li标签
$('ul').append( $li );
});
});

聊一聊JQ中delegate事件委托的好处的更多相关文章

  1. jq中的事件委托:closest,parent,parents,delegate

    closest .closest(selector) 从当前元素开始沿 DOM 树向上,获得匹配第一个符合选择器的祖先元素,返回零个或一个元素的 jQuery 对象. .parents() 和 .cl ...

  2. delegate事件委托

    下面举个例子 我们希望通过点击使得点击的li标签变红 <body style="height:2000px;"> <ul> <li>1111&l ...

  3. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...

  4. js和jquery中的事件委托

    [转+自己的修改] 概念: 什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却 ...

  5. 怎么理解js中的事件委托

    怎么理解js中的事件委托 时间 2015-01-15 00:59:59  SegmentFault 原文  http://segmentfault.com/blog/sunchengli/119000 ...

  6. js实例分析JavaScript中的事件委托和事件绑定

    我们在学习JavaScript中,难免都会去网上查一些资料.也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非.以下全部称为“事件委托”),尤其是在查JavaScript的事件处 ...

  7. JQuery中的事件委托

    JQuery 中的事件委托 定义 事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能:其次可以让新元素的子元素也可以拥 ...

  8. js中的事件委托或事件代理

    一,概述 JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 举一个网上大牛们讲事件委托都会举的例子:就是取快递来解释,有三个同事预 ...

  9. js中的事件委托或是事件代理

    JavaScript(jQuery)中的事件委托 https://www.cnblogs.com/zhoushengxiu/p/5703095.html js中的事件委托或是事件代理详解 https: ...

随机推荐

  1. 对象的创建过程(chapter5.7.3)

    总结一下对象的创建过程,假设有一个名为Dog的类: 1. 即使没有显示地使用static关键字,构造器实际上也是静态的方法,因此,当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类 ...

  2. 实现简单的跨站脚本攻击(XSS)

    我们来通俗的了解一下什么是跨站脚本攻击(XSS):在表单中提交 一段 js代码 ,提交的内容被展示到页面时 ,js会被浏览器解析 打个比方吧,比如我现在写的这篇博客,写完以后我要发表对吧? 发表这个过 ...

  3. Java集合的区别和选择

              Collection |--List       有序,可重复 |--ArrayList 底层数据结构是数组,查询快,增删慢. 线程不安全,效率高 |--Vector 底层数据结构 ...

  4. JavaWeb开发之Servlet

    1. Servlet有关概念和前置知识 1.1 什么是动态网页 如果浏览器在不同时刻或不同条件下访问web服务器上的某个页面,浏览器所获得的页面内容可以发生变化,那么这个页面就称之为动态页面. 动态网 ...

  5. java复习(3)---字符串、数组

    String有很多方法,复习一下,把一些很少用的稍微过遍手,加强记忆,方便以后工程上直接使用 (1)length() 返回长度 (2)indexOf() 返回字符串中字符的下标  如:s.indexO ...

  6. 集合框架Map、List、Set

    map分为:HashMap,TreeMap,LinkedHashMap,WeakHashMap和IdentityHashMap. 在实际开发的过程中,最常用的是HashMap,下面介绍一下最常见的用法 ...

  7. 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇

    Eclipse Memory Analyzer Tool(MAT)相关文章目录: 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇 使 ...

  8. 【WPF】学习笔记(一)——做一个简单的电子签名板

    参加实习(WPF)已经有两个多周的时间了,踩了一些坑,也算积累了一些小东西,准备慢慢拿出来分享一下.(●'◡'●) 这次呢就讲讲一个简单的电子签名板的实现. 先上张图(PS:字写得比较丑,不要太在意哈 ...

  9. (知识点)JavaScript继承

    1)原型链 ①原型链示例 function Shape() { this.name = 'shape'; this.toString = function(){ return this.name; } ...

  10. java并发程序——BlockingQueue

    概述 BlockingQueue顾名思义'阻塞的队列',是指在:队列的读取行为被阻塞直到队列不为空时,队列的写入行为被阻塞直到队列不满时.BlockingQueue是java.util.concurr ...