jQuery的事件委托实例分析


Posted in Javascript onJuly 15, 2015

事件委托主要是利用事件冒泡现象来实现的,对于事件委托的精准的掌握,可以有利于提高代码的执行效率。先看一段代码实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木</title>
<style type="text/css">
table{
 width:300px;
 height:60px;
 background-color:green;
} 
table td{
 background-color:white;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("td").bind("click",function(){
  $(this).text("哈哈");
 })
})
</script>
</head>
<body>
<table cellspacing="1">
 <tr>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
 </tr>
 <tr>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
 </tr>
</table>
</body>
</html>

在以上代码中,使用bind()方法为每一个td绑定了一个click事件处理函数,这样当点击单元格的时候,就会重新设置单元格中的文本。虽然此中方式实现了需要的效果,看起来非常的完美,其实并非这样,如果当单元格非常多时候,遍历单元格和为每一个单元格绑定事件处理函数将会大大降低代码的性能,如果让单元格的父元素监听事件,只要判断最初触发事件的DOM元素是否是td即可。

代码修改如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三水点靠木</title>
<style type="text/css">
table{
 width:300px;
 height:60px;
 background-color:green;
} 
table td{
 background-color:white;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
 $("table").bind("click",function(e){
  var target = e.target;
  $target=$(target);
  if ($target.is("td")){
   $target.text('哈哈');
  }
 })
})
</script>
</head>
<body>
<table cellspacing="1">
 <tr>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
 </tr>
 <tr>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
  <td>单元格</td>
 </tr>
</table>
</body>
</html>

以上代码实现了相同的功能,但是效率却大大提高了。

总结:所谓的事件委托,就是事件目标自身不处理事件,而是把处理任务委托给其父元素或者祖先元素,甚至根元素。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
异步javascript的原理和实现技巧介绍
Nov 08 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
使用Node.js配合Nginx实现高负载网络
Jun 28 Javascript
微信小程序 wxapp视图容器 view详解
Oct 31 Javascript
利用原生JS与jQuery实现数字线性变化的动画
Feb 24 Javascript
Node.js搭建WEB服务器的示例代码
Aug 15 Javascript
从源码里了解vue中的nextTick的使用
Nov 22 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
Vue实现点击显示不同图片的效果
Aug 10 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
jQuery的end()方法使用详解
Jul 15 #Javascript
浅谈$(document)和$(window)的区别
Jul 15 #Javascript
浅谈window对象的scrollBy()方法
Jul 15 #Javascript
jQuery的bind()方法使用详解
Jul 15 #Javascript
纯JavaScript实现的分页插件实例
Jul 14 #Javascript
javascript实现网页字符定位的方法
Jul 14 #Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 #Javascript
You might like
php打造属于自己的MVC框架
2012/03/07 PHP
获取PHP警告错误信息的解决方法
2013/06/03 PHP
50个PHP程序性能优化的方法
2014/06/02 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
JS的反射问题
2010/04/07 Javascript
javascript arguments使用示例
2014/12/16 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
jQuery实现网页抖动的菜单抖动效果
2015/08/07 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
在vue中实现禁止屏幕滚动,禁止屏幕滑动
2020/07/22 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
Python基于xlrd模块操作Excel的方法示例
2018/06/21 Python
pymongo中group by的操作方法教程
2019/03/22 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
把django中admin后台界面的英文修改为中文显示的方法
2019/07/26 Python
pycharm全局搜索的具体步骤
2020/07/28 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
农村面貌改造提升实施方案
2014/03/18 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
第一书记观后感
2015/06/08 职场文书
python中pymysql包操作数据库方法
2022/04/19 Python