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中的location用法简单介绍
Mar 07 Javascript
js checkbox(复选框) 使用集锦
Apr 28 Javascript
在JavaScript中监听IME键盘输入事件
May 29 Javascript
Javascript页面添加到收藏夹的简单方法
Aug 07 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
Feb 26 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
Jul 18 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
Nov 15 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
如何对react hooks进行单元测试的方法
Aug 14 Javascript
javascript 构建模块化开发过程解析
Sep 11 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购物车实现代码
2011/10/10 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
自己写的兼容低于PHP 5.5版本的array_column()函数
2014/10/24 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
bootstrap改变按钮加载状态
2014/12/01 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
详解Vue中的watch和computed
2020/11/09 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
python 列表中[ ]中冒号‘:’的作用
2019/04/30 Python
python 两个数据库postgresql对比
2019/10/21 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
信息总监管理职责范本
2014/03/08 职场文书
公司廉洁自律承诺书
2014/03/27 职场文书
离职证明标准格式
2014/09/15 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
个人房屋转让协议书范本
2014/10/26 职场文书
同意离婚答辩状
2015/05/22 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
基于Redis6.2.6版本部署Redis Cluster集群的问题
2022/04/01 Redis