事件冒泡

  1. <div id="box">
  2. <p id="pp">
  3. <button id="btn" onclick="clickMe()">点击</button>
  4. </p>
  5. </div>
  6. <script>
  7. var box = document.querySelector('#box')
  8. var pp = document.querySelector('#pp')
  9. var btn = document.querySelector('#btn')
  10. box.addEventListener('click',function(){ console.log(`div监听了事件`)},false)
  11. pp.addEventListener('click',function(){ console.log(`pp监听了事件`)},false)
  12. btn.addEventListener('click',function(){ console.log(`btn监听了事件`)},false)
  13. </script>

事件捕捉

  1. <style>
  2. li {
  3. border: 1px solid;
  4. margin-top: 10px;
  5. cursor: pointer;
  6. width: 100px;
  7. }
  8. .on {
  9. color: red;
  10. }
  11. </style>
  12. </head>
  13. <body>
  14. <ul id="app" onclick="clickLi();">
  15. <li>1</li>
  16. <li>2</li>
  17. <li>3</li>
  18. <li>4</li>
  19. <li>5</li>
  20. </ul>
  21. <script>
  22. function clickLi() {
  23. // console.log(event.target);
  24. var target = event.target;
  25. console.log(target);
  26. if (target.nodeName !== 'LI') return false;
  27. // 其他的li清除颜色
  28. var $li = document.querySelector('.on');
  29. if ($li) {
  30. $li.className = ''
  31. }
  32. // 被点击的li改变颜色
  33. target.className = 'on';
  34. }