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


相关推荐: 如何在云服务器上快速搭建个人网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  手机软键盘弹出时影响布局的解决方法  IOS倒计时设置UIButton标题title的抖动问题  Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】  如何实现建站之星域名转发设置?  JavaScript Ajax实现异步通信  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  bing浏览器学术搜索入口_bing学术文献检索地址  js代码实现下拉菜单【推荐】  零基础网站服务器架设实战:轻量应用与域名解析配置指南  Laravel如何实现API资源集合?(Resource Collection教程)  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Swift开发中switch语句值绑定模式  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  如何在IIS中新建站点并配置端口与IP地址?  常州企业网站制作公司,全国继续教育网怎么登录?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  iOS UIView常见属性方法小结  微信推文制作网站有哪些,怎么做微信推文,急?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何发送系统通知?(Notification渠道示例)  如何快速上传建站程序避免常见错误?  如何打造高效商业网站?建站目的决定转化率  Angular 表单中正确绑定输入值以确保提交与验证正常工作  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Mybatis 中的insertOrUpdate操作  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  轻松掌握MySQL函数中的last_insert_id()  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  如何基于PHP生成高效IDC网络公司建站源码?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  原生JS获取元素集合的子元素宽度实例  如何用y主机助手快速搭建网站?  进行网站优化必须要坚持的四大原则  Laravel怎么在Controller之外的地方验证数据  Bootstrap CSS布局之列表  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何构建满足综合性能需求的优质建站方案?  高防服务器如何保障网站安全无虞?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  EditPlus中的正则表达式 实战(4)  python中快速进行多个字符替换的方法小结  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Python自然语言搜索引擎项目教程_倒排索引查询优化案例