博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(巧用)事件代理
阅读量:4949 次
发布时间:2019-06-11

本文共 1345 字,大约阅读时间需要 4 分钟。

每一个javascript事件(例如:click,mouseover等)都会冒泡到父级节点。当我们需要给多个元素调用同一个函数时这点会很有用。比如,我们要为一个表格绑定这样的行为:点击td后,把背景色设置为红色,代码如下:

$(".myTable td").click(function(){    $(this).css("background","red");});

假设有100个td元素,在使用以上方式的时候,你绑定了100个事件,这将带来很负面的性能影响。那么有什么更好的方式呢?

代替这种效率很差的多元素事件监听的方法就是,你只需向它们的父节点绑定一次事件,然后通过 event.target 获取到点击的当前元素,代码如下:

$(".myTable").click(function(e){        var $click=$(e.target); //e.target捕捉到触发的目标元素;        $click.css("background","red");});

在改进方式中,你只为一个元素绑定了1个事件,显然,这种方式的性能要优于之前那种。同时,在jquery1.7之后版本提供了一个新的方式on(),来帮助你将整个事件监听封装到一个便利方法中,如下所示:

$(".myTable").on("click","td",function(){    $(this).css("background","red");});

巧妙运用事件代理的方式会写出更好的代码。举个比较全的栗子,细细品味一下:

    
事件代理
姓名 班级 年龄
张三 四年级1班 10
李四 四年级1班 10
王五 四年级1班 10
赵六 四年级1班 10
  • 你好
  • 我好
  • 大家好
  • 我勒个去
  • 好吧

 

转载于:https://www.cnblogs.com/imsomnus/p/3875491.html

你可能感兴趣的文章
stm32 堆和栈(stm32 Heap & Stack)
查看>>
SpringMVC从入门到精通之第三章
查看>>
JS基础-dom操作
查看>>
【转】Android详细的对话框AlertDialog.Builder使用方法
查看>>
Unite Beijing 2015大型活动
查看>>
loading加载的代码
查看>>
PHP框架CI CodeIgniter 的log_message开启日志记录方法
查看>>
arraylist
查看>>
关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
查看>>
zoj 1649 Rescue (BFS)(转载)
查看>>
371. Sum of Two Integers java solutions
查看>>
2124: 等差子序列 - BZOJ
查看>>
3529: [Sdoi2014]数表 - BZOJ
查看>>
自我介绍
查看>>
字符串匹配算法综述
查看>>
Linux centosVMware shell 管道符和作业控制、shell变量、环境变量配置文件
查看>>
在程序被送入后台时,向 iOS 借点时间,来完成一个长期任务
查看>>
【设计模式】工厂模式
查看>>
两个表格中数据不用是一一对应关系--来筛选不同数据,或者相同数据
查看>>
前端之路
查看>>