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实现禁止后退的方法
Dec 27 Javascript
举例详解JavaScript中Promise的使用
Jun 24 Javascript
javascript禁止超链接跳转的方法
Feb 02 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
Mar 09 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
Nov 08 Javascript
Vue.js的动态组件模板的实现
Nov 26 Javascript
生产制造追溯系统之在线打印功能
Jun 03 Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
Jul 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 echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php目录拷贝实现方法
2015/07/10 PHP
yii添删改查实例
2015/11/16 PHP
海量经典的jQuery插件集合
2010/01/12 Javascript
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
2011/04/27 Javascript
父页面显示遮罩层弹出半透明状态的dialog
2014/03/04 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python修改txt文件中的某一项方法
2018/12/29 Python
python 图像平移和旋转的实例
2019/01/10 Python
Atom Python 配置Python3 解释器的方法
2019/08/28 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Python 实现一个计时器
2020/07/28 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
小学科学教学反思
2014/01/26 职场文书
竞选部长演讲稿
2014/04/26 职场文书
临床医学专业求职信
2014/08/08 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Python matplotlib多个子图绘制整合
2022/04/13 Python