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 相关文章推荐
Javascript常考语句107条收集
Mar 09 Javascript
javascript面向对象编程(一) 实例代码
Jun 25 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
JavaScript实现继承的4种方法总结
Oct 16 Javascript
jQuery中hover与mouseover和mouseout的区别分析
Dec 24 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
May 20 jQuery
在vue项目中,使用axios跨域处理
Mar 07 Javascript
使用webpack搭建react开发环境的方法
May 15 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
vue-socket.io接收不到数据问题的解决方法
May 13 Javascript
element-ui中el-upload多文件一次性上传的实现
Dec 02 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数学运算函数大汇总(经典值得收藏)
2016/04/01 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
2020/05/14 PHP
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
alert中断settimeout计时功能
2013/07/26 Javascript
自己使用jquery写的一个无缝滚动的插件
2014/04/30 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
vue中activated的用法
2021/01/03 Vue.js
python写的ARP攻击代码实例
2014/06/04 Python
Python编写检测数据库SA用户的方法
2014/07/11 Python
Python中itertools模块用法详解
2014/09/25 Python
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python中设置变量访问权限的方法
2015/04/27 Python
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
Python实现的特征提取操作示例
2018/12/03 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
python opencv将图片转为灰度图的方法示例
2019/07/31 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
英国在线玫瑰专家:InterRose
2019/12/01 全球购物
计算机网络专业求职信
2014/06/05 职场文书
小学生环保标语
2014/06/13 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
课外活动总结
2015/02/04 职场文书
标准演讲稿格式结尾应该怎么书写?
2019/07/17 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL