博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript------事件委托(event delegation)
阅读量:5079 次
发布时间:2019-06-12

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

简单的说,事件委托(event delegation)是在DOM上层(也就是在触发事件的元素的父元素上)定义事件的处理程序,而不是定义在触发事件的元素本身上。

  首先我们来举这样一个例子:我有N个li元素,我想让点击过的li元素背景颜色都变为黄色。非常简单的一个例子是吧?

  我们可以通过如下代码实现:

var oBox = document.getElementById('box'); var aLi = oBox.children; for(var i=0;i
var oBox = document.getElementById('box'); var aLi = oBox.children; oBox.onclick = function(ev){
var oEvent = ev || event; var oTarget = oEvent.target || oEvent.srcElement;//解决浏览器的兼容性问题 if(oTarget.tagName == 'LI'){
/*此处的'LI'是需要大写的,若要小写可将if内的判断条件改为(oTarget.tagName.toLowerCase == 'li')*/ oTarget.style.background = 'yellow'; } } 至此,最简单的事件委托举例就完成了~ (以下是摘自JavaScript忍者秘籍,给大家进行下专业性的总结~) 事件委托是一种开发更高性能,且可伸缩Web应用程序的最好技术。 因为事件冒泡(bubbling)是唯一一种在所有浏览器中都可以使用的技术(事件捕获(capturing)在IE9之前版本不可用),所以重要的是要确保将委托应用到事件目标元素的祖先元素上。这样才能 确保最终冒泡到所委托的元素上。 可惜的是,在很多浏览器中,submit、change、focus和blur事件的冒泡实现都有很严重的问题。比如在老版的IE浏览器中,submit和change事件根本没有冒泡,而兼容W3C DOM的浏览器对两个事件 都实现了冒泡。所以,如果我们使用事件委托,必须解决如何克服这些缺陷问题。大家都知道,兼容性问题是最头疼的一项任务,所以不是一两句话可以说的清的,在以后的学习中再慢慢跟大家交流吧~ 作为一前端个新人,也是初次写博客,肯定会有很多分析不到位的地方,小妹先提前谢谢各位前辈的批评指正。天色已晚,祝大家晚安~

转载于:https://www.cnblogs.com/alinaxia/p/6021426.html

你可能感兴趣的文章
eggs
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>