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下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
IE6下CSS图片缓存问题解决方法
Dec 09 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
jquery实现移动端点击图片查看大图特效
Sep 11 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
JS实现课堂随机点名和顺序点名
Mar 09 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
Dec 20 Javascript
JS立即执行函数功能与用法分析
Jan 15 Javascript
微信小程序如何使用云开发
May 17 Javascript
vue使用openlayers实现移动点动画
Sep 24 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
How do I change MySQL timezone?
2008/03/26 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
PHP生成树的方法
2015/07/28 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
基于jquery实现的表格分页实现代码
2011/06/21 Javascript
ScrollDown的基本操作示例
2013/06/09 Javascript
JavaScript Array对象扩展indexOf()方法
2014/05/09 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
Python实现将DOC文档转换为PDF的方法
2015/07/25 Python
Python生成随机数组的方法小结
2017/04/15 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
关于ZeroMQ 三种模式python3实现方式
2019/12/23 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
应用艺术专业个人的自我评价
2014/01/03 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
房屋转让协议书范本
2014/04/11 职场文书
专科生就业求职信
2014/06/22 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
python标准库ElementTree处理xml
2022/05/20 Python