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 相关文章推荐
js 蒙版进度条(结合图片)
Mar 10 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
Feb 26 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
May 04 Javascript
JavaScript每天定时更换皮肤样式的方法
Jul 01 Javascript
JavaScript常见的五种数组去重的方式
Dec 15 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
五步轻松实现JavaScript HTML时钟效果
Mar 25 Javascript
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
vue+iview 实现可编辑表格的示例代码
Oct 31 Javascript
微信小程序时间轴实现方法示例
Jan 14 Javascript
vue使用recorder.js实现录音功能
Nov 22 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中定义网站根目录的常用方法
2010/08/08 PHP
discuz目录文件资料汇总
2014/12/30 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
2015/11/16 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
VueRouter导航守卫用法详解
2017/12/25 Javascript
详解vue使用$http服务端收不到参数
2019/04/19 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
python快速编写单行注释多行注释的方法
2019/07/31 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
2014/09/05 面试题
给定一个时间点,希望得到其他时间点
2013/11/07 面试题
工商学院毕业生自荐信
2013/11/12 职场文书
医学专业毕业生推荐信
2013/11/14 职场文书
技校毕业生自荐书
2014/05/23 职场文书
计算机系本科生求职信
2014/05/31 职场文书
迎国庆演讲稿
2014/09/15 职场文书
教师学习十八届五中全会精神心得体会
2016/01/05 职场文书
Vue深入理解插槽slot的使用
2022/08/05 Vue.js
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS