事件冒泡
<div id="box"> <p id="pp"> <button id="btn" onclick="clickMe()">点击</button> </p> </div> <script> var box = document.querySelector('#box') var pp = document.querySelector('#pp') var btn = document.querySelector('#btn') box.addEventListener('click',function(){ console.log(`div监听了事件`)},false) pp.addEventListener('click',function(){ console.log(`pp监听了事件`)},false) btn.addEventListener('click',function(){ console.log(`btn监听了事件`)},false) </script>
事件捕捉
<style> li { border: 1px solid; margin-top: 10px; cursor: pointer; width: 100px; } .on { color: red; } </style></head><body> <ul id="app" onclick="clickLi();"> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> <script> function clickLi() { // console.log(event.target); var target = event.target; console.log(target); if (target.nodeName !== 'LI') return false; // 其他的li清除颜色 var $li = document.querySelector('.on'); if ($li) { $li.className = '' } // 被点击的li改变颜色 target.className = 'on'; }