下面举个例子

我们希望通过点击使得点击的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 );
});
});

最新文章

  1. 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)
  2. SQL--Having
  3. SQL Server数据库主键与索引的几点区别
  4. Spring+Hibernate+Oracle中的Clob操作配置
  5. MySQL模糊查询:LIKE模式和REGEXP模式
  6. (3)HTML ”列表“、图片和超链接
  7. mysql中文乱码解决
  8. 在命令行cmd 下,输入dxdiag 查看关于电脑许多硬件的详细信息
  9. Hibernate 中对象关系映射(ObjectRelationMapping)
  10. linux -- 个人笔记
  11. SpringMVC详解(五)------参数绑定
  12. java中final和static
  13. cocos2d-x项目与vs2013编译
  14. VS2017 docker部署工具的使用
  15. vxlan和vlan数据报文
  16. mysql5.7 版本中 timestamp 不能为零日期 以及sql_mode合理设置
  17. 键盘回收(text filed,textview)
  18. [数据结构]P1.3 栈 Stack
  19. grep 多行 正则匹配
  20. cpan安装报错Invalid host name on line 1 at *FirstTime.pm line 1857.

热门文章

  1. Flask 应用上下文
  2. HTTP属性管理器 初探
  3. python基础之logging
  4. 0基础如何学Android开发
  5. php 在服务器端开启错误日志记录方法
  6. 最短路经算法简介(Dijkstra算法,A*算法,D*算法)
  7. iostat 磁盘io分析工具
  8. Jqgrid pager 关于“local” dataType 动态加载数据分页的研究(没好用的研究结果)
  9. CodeForces920E 链表强优化BFS
  10. python对象-多态