好程序员web前端教程分享JavaScript学习笔记之Event事件二

发布时间:2020-08-10 18:48:31 作者:好程序员
来源:ITPUB博客 阅读:140

  好程序员web前端教程 分享JavaScript 学习笔记之 Event 事件二,今天来聊一聊事件的执行机制。

  什么是事件的执行机制呢?

  思考一个问题?

  当一个大盒子嵌套一个小盒子的时候,并且两个盒子都有点击事件

你点击里面的小盒子,外面的大盒子上的点击事件要不要执行

好程序员web前端教程分享JavaScript学习笔记之Event事件二

事件的传播

 

  1. 只会传播同类事件
  2. 只会从点击元素开始按照 html 的结构逐层向上元素的事件会被触发
  3. 内部元素不管有没有该事件,只要上层元素有该事件,那么上层元素的事件就会被触发

 

冒泡、捕获、目标

目标

冒泡

捕获

冒泡和捕获的区别

事件委托

事件触发

<body>

  <ul>

    <li>1</li>

    <li>2</li>

    <li>3</li>

  </ul>

  <script>

     var oUl  = docuemnt.querySelector('ul')

    oUl.addEventListener('click',  function (e) {

      console.log('我是 ul 的点击事件,我被触发了')

    })

  </script></body>

target

<body>

  <ul>

    <li>1</li>

    <li>2</li>

    <li>3</li>

  </ul>

  <script>

     var oUl  = docuemnt.querySelector('ul')

    oUl.addEventListener('click',  function (e) {

      e  = e  || window.event

       var target  = e.target  || e.srcElement

      console.log(target)

    })

  </script></body>

委托

<body>

  <ul>

    <li>1</li>

    <li>2</li>

    <li>3</li>

  </ul>

  <script>

     var oUl  = docuemnt.querySelector('ul')

    

    oUl.addEventListener('click',  function (e) {

      e  = e  || window.event

       var target  = e.target  || e.srcElement

     

       // 判断你点击的是 li       if (target.nodeName.toUpperCase  === 'LI') {

       // 确定点击的是 li         // 因为当你点击在 ul 上面的时候,nodeName 应该是 'UL'         // 去做点击 li 的时候该做的事情了        console.log('我是 li,我被点击了')

      }

    })

  </script></body>

总结

 

默认行为

 

 

阻止默认行为

 

 

<a href ="https://www.baidu.com"> 点击我试试</a><script>

   var oA  = document.querySelector('a')

  a.addEventListener('click',  function (e) {

    e  = e  || window.event

    console.log( this.href)

    e.preventDefault  ? e.preventDefault()  : e.returnValue  =  false

  })</script>

推荐阅读:
  1. 好程序员web前端教程分享JavaScript面试题
  2. 好程序员web前端教程分享JavaScript的执行机制!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

event javascript web

上一篇:MySQL 5.7初始化报错error while loading shared libraries: libnuma.so.1

下一篇:how to deployment Office 365 AD FS SSO --布署 Office 365 AD FS SSO

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》