DOM API && 原生 JS 实现事件委托

学API通览API列表

MDN https://developer.mozilla.org/zh-CN/docs/Web/API/Document_Object_Model

w3schools https://www.w3schools.com/js/


document.documentElement //它返回根元素<html>

事件MouseEvrnt

<script>
 xxx.onclick = function(){
  console.log(this)
  console.log(arguments)
}
</script>

触发点击事件后在控制台打出的this是 id 为 xxx 的元素

QQ截图20170415121737.png

可以看到它的一个参数是MouseEvent
相当于浏览器 执行了 xxx.onclick.call(button,MouseEvent)

另一种写法就是

xxx.addEnventListener('click',function() {})

第一种写法会覆盖

xxx.onclick = function(){
console.log('1')
}

xxx.onclick = function() {
console.log('2')
}
2会覆盖1
所以要有升级版
addEnventlistener

事件通知

for (var i = 0 ;i < 6 ;i++) {
   xx.addEventListener('click',function(){
      console.log(i)
})
}

xx的click事件被执行时 , 控制台输出6个6 , 因为addEventListener , 每次循环 , addEventListener 就像let 一样 , 生成不同的 addEventListener

回调

只要不是你声明和你调用 , 这种都是回调

事件 : 冒泡 & 捕获

eventflow.png
child1.addEventListener('click' , function() {
    console.log('child')
})  

parent1.addEventListener('click' , function() {
     console.log('parent')
})

事件可以写boolean 参数 , true就是 捕获 , false就是 冒泡 , 默认false

target & currentTarget

  • target 是当前目标元素 , 如果目标是监听元素 , target和currenTarget一样.
  • currentTarget 是监听的元素

pareventDefault()

阻止默认事件

stopPropagation()

停止冒泡

原生 JS 实现事件委托

<a href="https://developer.mozilla.org/zh-CN/docs/Web/Events">MDN事件列表</a>

  • 获取包裹所有的p元素以及span的是id为xxx的div
  • function的参数e , 以e为参数的函数一般是回调函数的形式调用的 , 也就是在event发生的时候回调
  • div添加监听事件 , 事件名为click
  • 声明变量 , 赋值参数当前目标
  • while循环 , 目标不是 H1 时 , 就找他的parentNode
  • 如果找到div , 赋值null , 结束语句(不让它继续向上找)


    20170415121737.png

    **!!图中 et = et.parentNode 和 if(et === div){et = null break;}调换位置
    **
    设置console.log 如果当前目标是H1 , 点击H1打出"你点击了div里的 h1"
    否则打出"不是h1"
    实验:


    TIM截图20170416233227.png

事件委托的目的
1.减少监听器
2.监听动态内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在实现事件委托之前,首先必须先了解事件的绑定、监听和派发的含义。 事件的绑定 这是最直接简单的绑定在DOM元素上的...
    饥人谷_Dylan阅读 814评论 0 49
  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 3,169评论 1 10
  • 声明:本文来源于http://www.webzsky.com/?p=731我只是在这里作为自己的学习笔记整理一下(...
    angryyan阅读 7,242评论 1 6
  • (一)俏江南 烟雨漫延成一幅画 你走远方走来 绿了江南 (二)梦、远方和你 梦想是平凡人的渴望 远方是诗人的情怀 ...
    云妮yunni阅读 311评论 0 5
  • 有这样一个故事,说有个老人有六个儿子却都不孝顺,他年老无力生计,儿子们都不管他,只能靠乞讨为生,他为此非常痛苦,就...
    流年自在乐阅读 528评论 0 1

友情链接更多精彩内容