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 相关文章推荐
jquery下异步提交表单 异步跨域提交表单
Nov 17 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
Mar 22 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
Sep 28 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
May 16 Javascript
jQuery平滑旋转幻灯片特效代码分享
Sep 07 Javascript
JS JSOP跨域请求实例详解
Jul 04 Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
创建echart多个联动的示例代码
Nov 23 Javascript
详解离线安装npm包的几种方法
Nov 25 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
react实现同页面三级跳转路由布局
Sep 26 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
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
PHP基于curl模拟post提交json数据示例
2018/06/22 PHP
php设计模式之中介者模式分析【星际争霸游戏案例】
2020/03/23 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
用jquery仿做发微博功能示例
2014/04/18 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
python中使用mysql数据库详细介绍
2015/03/27 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
python中使用序列的方法
2015/08/03 Python
Python函数返回不定数量的值方法
2019/01/22 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
django基于restframework的CBV封装详解
2019/08/08 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
Python终端输出彩色字符方法详解
2020/02/11 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
CSS3 实现图形下落动画效果
2020/11/13 HTML / CSS
了解AppleTalk协议吗
2014/04/01 面试题
小学教师管理制度
2014/01/18 职场文书
中学生打架检讨书
2014/02/10 职场文书
土木工程求职信
2014/05/29 职场文书
酒店管理求职信
2014/06/09 职场文书
医学专业大学生求职信
2014/07/12 职场文书
苏州园林导游词
2015/02/03 职场文书
中秋节主题班会
2015/08/14 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server