index.html 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script src="./src/index.js"></script>
  9. <style>
  10. #outter{
  11. width:200px;
  12. background:red;
  13. height:200px;
  14. }
  15. #inner{
  16. width:100px;
  17. background:green;
  18. height:100px;
  19. }
  20. </style>
  21. </head>
  22. <body>
  23. <div id="outter">
  24. <div id="inner"></div>
  25. </div>
  26. <ul id="items">
  27. <li>1111</li>
  28. <li>2222</li>
  29. <li>3333</li>
  30. <li>4444</li>
  31. <li>5555</li>
  32. <div>666</div>
  33. </ul>
  34. <script>
  35. //1、事件捕获冒泡-- 先触发outer
  36. let outter = document.querySelector('#outter')
  37. let inner = document.querySelector('#inner')
  38. outter.addEventListener('click',function(){
  39. console.log('捕获outter')
  40. },true) // true 是否为捕获
  41. inner.addEventListener('click',function(){
  42. console.log('捕获inner')
  43. },true) // true 是否为捕获
  44. outter.addEventListener('click',function(){
  45. console.log('冒泡outter')
  46. }) // true 是否为捕获
  47. inner.addEventListener('click',function(){
  48. console.log('冒泡inner')
  49. }) // true 是否为捕获
  50. //2、事件委托函数封装
  51. addEventListener('#items','click',function(e){
  52. console.log(this.innerHTML)
  53. },'li')
  54. //3、手写事件总线 -- 一个事件绑定多个回调
  55. eventBus.on('login',data=>{
  56. console.log(data+'2222')
  57. })
  58. eventBus.on('login',data=>{
  59. console.log(data+'3333')
  60. })
  61. //触发
  62. setTimeout(()=>{
  63. eventBus.emit('login','张三')
  64. },2000)
  65. //注销事件
  66. eventBus.off('login')
  67. </script>
  68. </body>
  69. </html>