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读取中文COOKIE的解决办法
Feb 15 Javascript
一个js写的日历(代码部分网摘)
Sep 20 Javascript
基于jquery的jqDnR拖拽溢出的修改
Feb 12 Javascript
IE6下focus与blur错乱的解决方案
Jul 31 Javascript
JS父页面与子页面相互传值方法
Mar 05 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
浅谈window.onbeforeunload() 事件调用ajax
Jun 29 Javascript
浅谈jquery上下滑动的注意事项
Oct 13 Javascript
js Dom实现换肤效果
Oct 21 Javascript
微信小程序点餐系统开发常见问题汇总
Aug 06 Javascript
部署vue+Springboot前后端分离项目的步骤实现
May 31 Javascript
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
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 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP children()函数讲解
2019/02/03 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
很全面的JavaScript常用功能汇总集合
2016/01/22 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
2018/11/14 jQuery
JavaScript this绑定过程深入详解
2018/12/07 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python的lambda匿名函数的简单介绍
2013/04/25 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python算法与数据结构之冒泡排序实例详解
2019/06/22 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
Python3基于print打印带颜色字符串
2020/07/06 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
Keras保存模型并载入模型继续训练的实现
2021/02/20 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
教育实习生的自我评价分享
2013/11/21 职场文书
关键在于落实心得体会
2014/09/03 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2015年办公室文员工作总结
2015/04/24 职场文书
少先队入队仪式主持词
2015/07/04 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS