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

发布时间 - 2026-01-11 02:30:05    点击率:

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

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

  具体小案例如下:  

<!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>

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


# js  # 事件委托  # 事件代理  # js中的事件委托或是事件代理使用详解  # JS事件处理机制及事件代理(事件委托)实例详解  # JS 事件绑定、事件监听、事件委托详细介绍  # javascript事件委托的方式绑定详解  # JavaScript中的事件委托及好处  # JavaScript动态添加事件之事件委托  # JavaScript事件委托(事件代理)举例详解  # 购物车  # 绑定  # 让其  # 的是  # 在这个  # 都要  # 中有  # 只需  # 或者是  # 要给  # 定了  # 大家多多  # 最外层  # 没有必要  # font  # size  # Document  # padding  # title  # style 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信小程序 闭包写法详细介绍  如何解决hover在ie6中的兼容性问题  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何快速生成高效建站系统源代码?  晋江文学城电脑版官网 晋江文学城网页版直接进入  android nfc常用标签读取总结  香港服务器部署网站为何提示未备案?  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何快速查询网站的真实建站时间?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  如何用已有域名快速搭建网站?  JS弹性运动实现方法分析  Laravel中的Facade(门面)到底是什么原理  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  活动邀请函制作网站有哪些,活动邀请函文案?  如何在 React 中条件性地遍历数组并渲染元素  PythonWeb开发入门教程_Flask快速构建Web应用  nginx修改上传文件大小限制的方法  中山网站制作网页,中山新生登记系统登记流程?  如何确保FTP站点访问权限与数据传输安全?  JS去除重复并统计数量的实现方法  ,南京靠谱的征婚网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  如何快速生成专业多端适配建站电话?  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  微信小程序 wx.uploadFile无法上传解决办法  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  音响网站制作视频教程,隆霸音响官方网站?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  PHP正则匹配日期和时间(时间戳转换)的实例代码  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  北京的网站制作公司有哪些,哪个视频网站最好?  如何在万网自助建站平台快速创建网站?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何在橙子建站上传落地页?操作指南详解  再谈Python中的字符串与字符编码(推荐)  千库网官网入口推荐 千库网设计创意平台入口  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何快速搭建高效WAP手机网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】