美文网首页
绑定事件优化---事件代理

绑定事件优化---事件代理

作者: 林小刀2_0 | 来源:发表于2018-05-18 17:31 被阅读0次

在DOM事件对象中有两个属性总是时不时的困扰我,就是target和currentTarget,有时候很迷惑分不清两者的区别,因此有必要把这两个属性好好梳理一下,加深理解,以便日后的查询。
MDN中对target的解释为,一个触发事件的对象的引用, 当事件处理程序在事件的冒泡或捕获阶段被调用时。
而对于currentTarget,它指的是当事件遍历DOM时,标识事件的当前目标。它总是引用事件处理程序附加到的元素,而不是event.target,它标识事件发生的元素。
举个例子来说明。

<!DOCTYPE html>
 <html>
 <head> 
<meta charset="utf-8"> 
<title>JS Bin</title> 
</head>
 <body>
 <ul> <li>hello 1</li> <li>hello 2</li> <li>hello 3</li> <li>hello 4</li> </ul> 
<script>
 let ul = document.querySelectorAll('ul')[0] 
let aLi = document.querySelectorAll('li')
 ul.addEventListener('click',function(e){ let oLi1 = e.target let oLi2 = e.currentTarget console.log(oLi1) 
// 被点击的li 
console.log(oLi2) // ul 
console.og(oLi1===oLi2) // false }) 
</script> </body> </html>

我们知道,e.target可以用来实现事件委托,该原理是通过事件冒泡(或者事件捕获)给父元素添加事件监听,e.target指向引发触发事件的元素,如上述的例子中,e.target指向用户点击的li,由于事件冒泡,li的点击事件冒泡到了ul上,通过给ul添加监听事件而达到了给每一个li添加监听事件的效果,而e.currentTarget指向的是给绑定事件监听的那个对象,即ul,从这里可以发现,e.currentTarget===this返回true,而e.target===this返回false。e.currenttarget和e.target是不相等的。

相关文章

  • 绑定事件优化---事件代理

    在DOM事件对象中有两个属性总是时不时的困扰我,就是target和currentTarget,有时候很迷惑分不清两...

  • 事件绑定、事件冒泡与捕获

    一、事件绑定事件绑定又称事件委托,事件代理,可以给同一个div绑定多个事件 非IE: IE: 绑定事件兼容写法:(...

  • js事件

    JS事件 事件绑定方式 事件对象 事件传播流 事件代理 一、事件绑定方式 方式一:通过HTML标签行间属性内绑定 ...

  • 概念

    事件委托,事件代理 事件代理又称之为事件委托。是JavaScript中常用绑定事件的常用技巧。顾名思义,“事件代理...

  • 事件操作

    事件绑定函数 简单的通用事件绑定函数 事件冒泡 事件会从触发的元素往上级元素一层一层触发 事件代理 使用代理的完善...

  • 给动态添加的dom绑定事件,没有触发的原因

    1.事件没有绑定成功 解决方法:可以在生成dom之后再去绑定事件 2.事件委托/事件代理

  • 事件

    事件 1. 事件绑定 2. 普通的事件绑定函数 3. 事件冒泡 阻止事件冒泡 4. 事件代理 将事件挂在到父元素上...

  • jQuery 动画

    jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 使用.on( events [,selector ...

  • jQuery事件

    一、jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 .on( events [,selector ...

  • js事件深入学习

    JavaScript的事件机制包含,事件绑定、事件监听、事件委托(事件代理)等 js中的事件流 ① .冒泡:当下级...

网友评论

      本文标题:绑定事件优化---事件代理

      本文链接:https://www.haomeiwen.com/subject/olzgdftx.html