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 相关文章推荐
初探jquery——表单应用范例
Feb 20 Javascript
jQuery 获取对象 基本选择与层级
May 31 Javascript
angularjs中的单元测试实例
Dec 06 Javascript
javascript实现显示和隐藏div方法汇总
Aug 14 Javascript
js轮播图代码分享
Jul 14 Javascript
基于AngularJS实现的工资计算器实例
Jun 16 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
vue中eslintrc.js配置最详细介绍
Dec 21 Javascript
通过npm或yarn自动生成vue组件的方法示例
Feb 12 Javascript
基于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
destoon调用企业会员公司形象图片的实现方法
2014/08/21 PHP
PHP保存带BOM文件的方法
2015/02/12 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
JSON.parse 解析字符串出错的解决方法
2010/07/08 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
详解angular2 控制视图的封装模式
2018/12/27 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
python根据京东商品url获取产品价格
2015/08/09 Python
Python while 循环使用的简单实例
2016/06/08 Python
python用post访问restful服务接口的方法
2018/12/07 Python
基于OpenCV python3实现证件照换背景的方法
2019/03/22 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
如何教少儿学习Python编程
2020/07/10 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
html5 figure和figcaption的使用方法
2018/09/10 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
社区党务公开实施方案
2014/03/18 职场文书
2014年艾滋病防治工作总结
2014/12/10 职场文书
2015年党员自评材料
2014/12/17 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
2015年幼儿园后勤工作总结
2015/04/25 职场文书
2015年药店店长工作总结
2015/04/29 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书
新手初学Java网络编程
2021/07/07 Java/Android
关于JavaScript轮播图的实现
2021/11/20 Javascript
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
Nginx如何获取自定义请求header头和URL参数详解
2022/07/23 Servers