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中文入门指南,翻译加实例,jQuery的起点教程
Feb 09 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
Sep 22 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
May 28 Javascript
javascript引用类型指针的工作方式
Apr 13 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
JavaScript中的anchor()方法使用详解
Jun 08 Javascript
EasyUi combotree 实现动态加载树节点
Apr 01 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
JS获取及验证开始结束日期的方法
Aug 20 Javascript
jQuery--遍历操作实例小结【后代、同胞及过滤】
May 22 jQuery
记录一次websocket封装的过程
Nov 23 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
php at(@)符号的用法简介
2009/07/11 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
2014/07/05 PHP
从零开始学YII2框架(六)高级应用程序模板
2014/08/20 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
计算新浪Weibo消息长度(还可以输入119字)
2013/07/02 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
2013/09/22 Javascript
JavaScript中的Math.LOG2E属性使用详解
2015/06/14 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python实现图书馆研习室自动预约功能
2018/04/27 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
golang/python实现归并排序实例代码
2020/08/30 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
2013年员工自我评价范文
2013/12/27 职场文书
顶岗实习计划书
2014/01/10 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
成人继续教育实施方案
2014/03/01 职场文书
十佳少年事迹材料
2014/12/25 职场文书
党员承诺书范文2015
2015/04/27 职场文书
幼儿园小朋友毕业感言
2015/07/30 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL