博客列表 >事件添加与事件代理的实现原理

事件添加与事件代理的实现原理

α清尘
α清尘原创
2020年11月07日 18:12:31747浏览

事件的添加方式

事件添加方式,事件监听;

相关知识整理:

  • ev:事件对象;
  • ev.target: 表示当前按钮,表示事件触发者;
  • 事件监听的语法:addEventListener(事件名称,回调方法,传递机制/捕获/冒泡);false是冒泡阶段,ture是捕获阶段;
  • setInterval()设置定时器;
  • dispatchEvent() 分配事件,事件派出器,自动执行某个操作;

实例演示:

  1. <body>
  2. <button onclick="show(this)">按钮1</button>
  3. <button>按钮2</button>
  4. <button>按钮3</button>
  5. <button>按钮4</button>
  6. <button>按钮5</button>
  7. <script>
  8. function show(ele){
  9. console.log(ele.innerHTML)
  10. }
  11. // ev.target表示当前按钮,表示事件触发者;
  12. const b=document.querySelector("button:nth-of-type(2)")
  13. b.onclick=(ev)=>console.log(ev.target,"您点击了按钮2")
  14. // 事件监听
  15. // addEventListener(事件名称,回调方法,传递机制/捕获/冒泡)
  16. const d3=document.querySelector("button:nth-of-type(3)")
  17. d3.addEventListener("click",(ev)=>console.log("点击了按钮3"),false)
  18. const last=document.querySelector("button:last-of-type")
  19. last.addEventListener("click",(ev)=>console.log("您点击了最后一个"),false)
  20. const ev=new Event("click");
  21. setInterval(()=>last.dispatchEvent(ev),1000)
  22. // setInterval()设置定时器
  23. </script>
  24. </body>

事件代理的实现原理

事件代理也叫事件委托;
事件代理本质上就是将应该在子元素触发的事件,委托给父元素来执行,可以极大的简化代码和业务逻辑;
原理::利用冒泡原理,把事件添加到父级,触发执行结果;
true:表示捕获阶段;false:表示冒泡阶段;
捕获是由外向内执行的,而冒泡是由外向内执行的;
根据冒泡原理,子元素的同名事件会冒泡到父元素的同名事件上,所有可以直接将事件添加到他的父元素上;

实例演示:

  1. <ul>
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. </ul>
  8. <script>
  9. document.querySelectorAll("li")
  10. .forEach((item)=>item.addEventListener("click",(ev)=>console.log("触发%s,绑定%s",ev.target,ev.currentTarget),false));
  11. document.querySelector("ul")
  12. .addEventListener("click",(ev)=>console.log("触发%s,绑定%s",ev.target,ev.currentTarget),false);
  13. </script>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议