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 相关文章推荐
特殊字符、常规符号及其代码对照表
Jun 26 Javascript
jQuery each()方法的使用方法
Mar 18 Javascript
基于jQuery的弹出框插件
Mar 18 Javascript
Javascript 面向对象(三)接口代码
May 23 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
js基础之DOM中元素对象的属性方法详解
Oct 28 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
Mar 26 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
Apr 24 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 Javascript
vue设置一开始进入的页面教程
Oct 28 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 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
JavaScript Chart 插件整理
2010/06/18 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
js实现文件上传表单域美化特效
2015/11/02 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
基于node.js实现微信支付退款功能
2017/12/19 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
vue自定义正在加载动画的例子
2019/11/14 Javascript
js代码实现轮播图
2020/05/04 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
Python列表切片用法示例
2017/04/19 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
2018/06/13 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
2019/09/26 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
美国旅游网站:Tours4Fun
2017/02/17 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
java程序员面试交流
2012/11/29 面试题
2014年教师培训的自我评价
2014/01/03 职场文书
2014年村党支部工作总结
2014/12/04 职场文书
期末考试复习计划
2015/01/19 职场文书
深入解析NumPy中的Broadcasting广播机制
2021/05/30 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang