javascript举例介绍事件委托的典型使用场景
<html>
<body>
<ul style='list-style:none;max-width:200px;border:1px solid;'><li>点我试试</li>
<ul>
<script>(document.querySelector('ul')).addEventListener('click' ,function(e){console.log('e.target')console.log(e.target)console.log('e.currentTarget')console.log(e.currentTarget)})</script>
</body>
</html>
x
<html>
<body>
<ul style='list-style:none;max-width:200px;border:1px solid;'>
<li>点我试试</li>
<ul>
<script>
(document.querySelector('ul')).addEventListener('click' ,function(e){
console.log('e.target')
console.log(e.target)
console.log('e.currentTarget')
console.log(e.currentTarget)
})
</script>
</body>
</html>
<body>
<ul><li>点<span>这里</span></li><li>点这里</li>
</ul>
<style>ul, li{list-style:none;border:1px solid;padding:10px;background:#ddd
}
li{text-align:center;margin:10px;background:#fff
}
</style>
</body>
</html>
x
<body>
<ul>
<li>点<span>这里</span></li>
<li>点这里</li>
</ul>
<style>
ul, li{
list-style:none;
border:1px solid;
padding:10px;
background:#ddd
}
li{
text-align:center;
margin:10px;
background:#fff
}
</style>
</body>
</html>
var ul=document.querySelector('ul')
ul.addEventListener('click',function(e){var el = e.target
//判断当前点击的元素是否为li,如果不是,执行以下的while循环while(el.tagName !== 'LI'){
//如果点击的元素为ul,直接跳出循环if(el === ul){el = nullbreak;}
//否则,将当前元素父元素赋给elel=el.parentNode}
//如果最后el不为null,则打出'ok'if(el){console.log('ok')}
//否则,打出'你点击的不是li'else console.log('你点击的不是li')
})
x
var ul=document.querySelector('ul')
ul.addEventListener('click',function(e){
var el = e.target
//判断当前点击的元素是否为li,如果不是,执行以下的while循环
while(el.tagName !== 'LI'){
//如果点击的元素为ul,直接跳出循环
if(el === ul){
el = null
break;
}
//否则,将当前元素父元素赋给el
el=el.parentNode
}
//如果最后el不为null,则打出'ok'
if(el){
console.log('ok')
}
//否则,打出'你点击的不是li'
else console.log('你点击的不是li')
})
<html>
<body>
<ul><li>1</li><li>2</li><li>3</li><li>4</li>
</ul><button id=addButton>+</button>
</body>
</html>
<style>
li{border: 1px solid;
}
</style>
<script>
addButton.onclick = function(){var li = document.createElement('li')li.textContent = 'new' document.querySelector('ul').appendChild(li)
}
document.querySelector('ul').onclick = function(e){console.log(e.target)
}
</script>
</body>
</html>
x
<html>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
<button id=addButton>+</button>
</body>
</html>
<style>
li{
border: 1px solid;
}
</style>
<script>
addButton.onclick = function(){
var li = document.createElement('li')
li.textContent = 'new'
document.querySelector('ul').appendChild(li)
}
document.querySelector('ul').onclick = function(e){
console.log(e.target)
}
</script>
</body>
</html>
当点击左下角的加号按钮时,会增加一个新的li,同时在点击li时,在控制台输出被点击的li的内容。这就是用事件委托实现动态监控。
转载于:https://www.cnblogs.com/zjx2011/p/8447512.html
javascript举例介绍事件委托的典型使用场景相关推荐
- 详解事件代理(事件委托)以及应用场景
事件代理(也称事件委托)事件代理,俗地来讲,就是把⼀个元素响应事件 ( click . keydown ......)的函数委托到另⼀个元素 前⾯讲到,事件流的都会经过三个阶段: 捕获阶段 -> ...
- Javascript事件模型系列(二)事件的捕获-冒泡机制及事件委托机制
一.事件的捕获与冒泡 由W3C规定的DOM2标准中,一次事件的完整过程包括三步:捕获→执行目标元素的监听函数→冒泡,在捕获和冒泡阶段,会依次检查途径的每个节点,如果该节点注册了相应的监听函数,则执行监 ...
- JavaScript:事件冒泡和事件委托
2019独角兽企业重金招聘Python工程师标准>>> JavaScript事件代理和委托(Delegation) JavaScript事件冒泡和事件委托 JavaScript:通过 ...
- js中的事件委托或是事件代理详解(转载)
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...
- 事件绑定、事件监听、事件委托
2019独角兽企业重金招聘Python工程师标准>>> 在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定.事件监听.事件委托(事件代理)等 ...
- js事件委托或事件代理
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...
- JS中的事件委托/事件代理详解
起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...
- JS中的事件委托 / 代理详解
[前言] 事件委托/代理是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的 [主体] 概述: 那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用 ...
- JS 事件代理和事件委托
目录 事件委托的概念理解 为什么要用事件委托 事件委托的原理: 事件代理(委托)实现 总结: 事件委托的概念理解 为什么叫事件委托?它还有一个名字叫事件代理. JavaScript高级程序设计上讲:事 ...
最新文章
- CodeForces - 1512G Short Task(欧拉筛求因子和)
- HDU 3264 Open-air shopping malls
- 【hrbust2294】方方正正
- Image-to-Image Translation with Conditional Adversarial Networks
- 2048小游戏——网页版(提高篇)
- 宇视云所有故障排查思维导图
- 思科 计算机网络 第7章测试考试 答案
- sql server 常用工具
- VB操作EXCEL表的常用方法
- 将矩形图片绘制成圆形图片
- 网上教务评教管理系统
- h5调用Android、ios的方法
- 泪目!上海00后小伙AI「复活」奶奶,100%还原音容笑貌,却引发巨大争议
- 看看咱是如何用MATLAB白嫖遥遥领先于同行的神仙级翻译工具 — DeepL
- iris-session梳理
- 2022亚马逊云科技re:Invent,与合作伙伴描绘宏伟蓝图
- 计算机在线考试word,计算机一级考试word操作试题
- EOJ 3260:袋鼠妈妈找孩子
- 《罗生门》人如果不自私,就无法活下去
- 机械优化黄金分割法c语言编程,黄金分割法_机械优化设计_C语言程序.doc
热门文章
- 1.7 编程基础之字符串 27 单词翻转 4分 python
- win7怎么进入安全模式_windows 10如何进入安全模式
- 【ES6(2015)】Reflect
- Python笔记-假设检验之单样本T检验
- Android笔记-使用okhttp3库发送http请求
- cuda笔记-GPU多线程的奇偶排序
- Qt文档阅读笔记-QML Canvas的官方解析及实例
- java语言factory_一个简单例子解释 Java factory
- c#web页面显示弹窗_基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用
- php中子类实现多接口,PHP子类无法实现相同的接口父类实现