1. 给父元素和子元素绑定相同的事件,子元素执行事件的时候,父元素的事件也会被触发

1、怎么阻止事件冒泡

  1. event.stopPropagation();
  2. 加上这行代码,就可以阻止事件冒泡了
  3. 使用addEventListener绑定事件,可以传入三个参数,
  4. 第一个参数:事件名
  5. 第二个参数:回调函数
  6. 第三个参数:是否冒泡,false为不冒泡
  1. <div id="parent">
  2. <div id="child">
  3. </div>
  4. </div>
  5. <script>
  6. var parent = document.getElementById("parent")
  7. var child = document.getElementById("child")
  8. parent.onclick = function(event){
  9. alert('parent')
  10. event.stopPropagation()
  11. }
  12. child.onclick = function(event){
  13. alert("child")
  14. event.stopPropagation();
  15. }
  16. /* parent.addEventListener('click',function(){
  17. console.log('parent');
  18. },false) */
  19. </script>

2、事件的捕获

  1. 通过addEventListener实现捕获
  2. addEventListener第三个参数为true时,它就开启了捕获
  3. var parent = document.getElementById("parent")
  4. var child = document.getElementById("child")
  5. parent.addEventListener("click",function(){
  6. console.log("parent");
  7. },true)
  8. child.addEventListener("click",function(){
  9. console.log("child");
  10. },true)

3、阻止a标签默认事件

  1. 阻止默认事件:
  2. 1return false
  3. 2event.preventDefault()
  1. <a href="https://www.baidu.com" id="a">a</a>
  2. <script>
  3. var a = document.getElementById('a')
  4. a.onclick = function(){
  5. //return false
  6. event.preventDefault()
  7. }
  8. </script>
  9. 当返回值为false的时候,a标签的跳转就不可以执行了

4、事件委托

  1. 事件委托:利用事件冒泡的原理,把原来应该给子元素绑定的事件绑定给父元素,让父元素负责监听,通过冒泡将事件冒泡到子元素上
  1. <ul id="ul">
  2. <li>html</li>
  3. <li>css</li>
  4. <li>js</li>
  5. </ul>
  6. <script>
  7. var ul = document.getElementById("ul")
  8. ul.onclick = function(event){
  9. console.log(event.target);//li--html,css,js
  10. }
  11. </script>