js事件委托和事件代理案例分享


Posted in Javascript onJuly 25, 2017

什么是事件委托/事件代理

利用事件的冒泡传播机制(触发当前元素的某一个行为,它父级所有元素的相关行为都会被触发),如果一个容器中有很多元素都要绑定点击事件,我们没有必要一个个的绑定了,只需要给最外层容器绑定一个点击事件即可,在这个方法执行的时候,通过事件源的区分来进行不同的操作。

具体小案例如下:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    *{
      margin:0;
      padding:0;
      font-size:14px;
    }
    html,body{
      width:100%;
      height:100%;
      overflow:hidden;
    }
    #box{
      position:absolute;
      left:50%;
      top:50px;
      width:100px;
      height:30px;
      margin-left:-50px;
      line-height:30px;
      text-align:center;
      border:1px solid #2489cc;
    }
    #mark{
      position:absolute;
      top:30px;
      left:-1px;
      width:300px;
      height:100px;
      line-height:100px;
      text-align:center;
      background:#ffe470;
      border:1px solid #2489cc;
    }
  </style>
</head>
<body>
  <div id='box'>
    <span>购物车</span>
    <div id="mark" style='display:none'>  
      查看购物车的详细信息
    </div>
  </div>

  <script> 
    var mark = document.getElementById('mark');
    document.body.onclick = function(e){
      e = e || window.event;
      e.target = e.target || e.srcElement;

      //如果点击的是box或者是#box下的span,我们判断mark是否显示,显示让其隐藏,反之让其显示
      if(e.target.id==="box" || (e.target.tagName.toLowerCase()==="span" && e.target.parentNode.id==='box')){
        if(mark.style.display === "none"){
          mark.style.display === "block"
        }else{
          mark.style.display === "none"
        }
        return;
      }
      //如果事件源是#mark,不进行任何的操作
      if(e.target.id==="mark"){
        return;
      }
      mark.style.display === "none"
    }
  </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript parseInt 大改造
Sep 27 Javascript
js removeChild 障眼法 可能出现的错误
Oct 06 Javascript
基于jquery的设置页面文本框 只能输入数字的实现代码
Apr 19 Javascript
纯css+js写的一个简单的tab标签页带样式
Jan 28 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
Apr 06 Javascript
Bootstrap导航条鼠标悬停下拉菜单
Jan 04 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
封装 axios+promise通用请求函数操作
Aug 11 Javascript
详解Vue2的diff算法
Jan 06 Vue.js
基于JavaScript实现多级菜单效果
Jul 25 #Javascript
简单谈谈React中的路由系统
Jul 25 #Javascript
老生常谈js中的MVC
Jul 25 #Javascript
教你5分钟学会用requirejs(必看篇)
Jul 25 #Javascript
浅谈Vue.js 1.x 和 2.x 实例的生命周期
Jul 25 #Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 #Javascript
基于JavaScript实现百度搜索框效果
Jun 28 #Javascript
You might like
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
一个获取第n个元素节点的js函数
2014/09/02 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
2019/02/02 Javascript
手写Vue弹窗Modal的实现代码
2019/09/11 Javascript
JS实现百度搜索框
2021/02/25 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python设计模式之单例模式实例
2014/04/26 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python生成九宫格图片
2018/11/19 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
Python随机数函数代码实例解析
2020/02/09 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
材料成型专业个人求职信范文
2013/09/25 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
推荐信怎么写
2014/05/09 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
网站出售协议书范文
2014/10/10 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Python find()、rfind()方法及作用
2022/12/24 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS