博主信息
博文 18
粉丝 1
评论 0
访问量 22136
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
事件添加与事件代理的实现原理
α清尘
原创
988人浏览过

事件的添加方式

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

相关知识整理:

  • 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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学