当前位置: 首页 > news >正文

网络公司发生网站建设费分录响应式自适应织梦网站模板

网络公司发生网站建设费分录,响应式自适应织梦网站模板,方一凡和磊儿做家教的网站,河南省建设厅网站103文章目录 事件委托机制✅ 事件委托的核心原理🔎 为什么使用事件委托?🧑‍💻 事件委托示例⚡ 事件委托的注意事项事件委托不适合的场景: 阻止冒泡机制✅ 具体含义:🧑‍💻 示例解析&am…

文章目录

  • 事件委托机制
    • ✅ 事件委托的核心原理
    • 🔎 为什么使用事件委托?
    • 🧑‍💻 事件委托示例
    • ⚡ 事件委托的注意事项
    • 事件委托不适合的场景:
  • 阻止冒泡机制
    • ✅ 具体含义:
    • 🧑‍💻 示例解析
    • 🚦 注意事项
  • 阻止默认行为机制

事件委托机制

事件委托(Event Delegation)
事件委托是一种将事件监听器绑定到父元素上,利用事件冒泡机制来处理子元素事件的技术。即使子元素是动态生成的,也可以通过事件委托轻松捕获并处理它们的事件。

✅ 事件委托的核心原理

事件冒泡:当一个元素上的事件被触发时,事件会从目标元素向上冒泡到其父元素,直至根元素(document)。

利用冒泡:通过给父元素绑定事件监听器,可以捕捉到所有子元素触发的事件。

减少事件绑定次数:即使有大量子元素,也只需绑定一次事件,提升性能。

🔎 为什么使用事件委托?

高效:避免为每个子元素单独绑定事件,减少内存占用。

适用动态内容:适合处理由 JavaScript 动态生成的元素。

代码简洁:简化代码结构,易于维护。

🧑‍💻 事件委托示例

假设你有一个待办事项列表,每个li是动态生成的,我们需要点击某个li时删除它。

❌ 不用事件委托(直接绑定事件)

// 每次添加 li 时都绑定一个事件
function addItem(text) {const li = document.createElement('li');li.textContent = text;document.querySelector('ul').appendChild(li);// 为每个 li 绑定事件li.addEventListener('click', function () {li.remove();});
}

缺点:如果有成千上万个li,内存消耗会很大。

✅ 使用事件委托

// 父元素 ul 绑定事件
document.querySelector('ul').addEventListener('click', function (e) {// 判断是否点击的是 li 元素if (e.target.tagName === 'LI') {e.target.remove(); // 删除被点击的 li}
});

优点:

只需要一次事件绑定。

即使后续有更多li元素被添加,也会自动生效。

代码简洁高效。

⚡ 事件委托的注意事项

  • 事件目标的判断:
    使用 e.target 来获取实际触发事件的元素,并通过 tagName 或 classList 判断是否为需要的目标元素。

  • 阻止冒泡或默认行为:
    如果需要阻止事件进一步冒泡,可以使用 e.stopPropagation()。

事件委托不适合的场景:

  • 如果子元素数量极少,直接绑定事件可能更加直观。

  • focus、blur 等不冒泡的事件无法使用事件委托。

阻止冒泡机制

e.stopPropagation()意思是在子元素冒泡到父元素的时候就已经被拦截
e.stopPropagation() 的作用是 阻止事件继续冒泡,让事件不会再传递到父元素。

✅ 具体含义:

e.stopPropagation():阻止事件从当前目标元素继续向上冒泡,不会触发父元素的事件监听器。

它只影响冒泡阶段,不影响捕获阶段。

🧑‍💻 示例解析

<div id="parent" style="width:300px;height:300px;background-color:lightblue;"><button id="child" style="width:100px;height:100px;">点击我</button>
</div><script>document.getElementById('parent').addEventListener('click', function() {console.log('父元素被点击');});document.getElementById('child').addEventListener('click', function(e) {console.log('子元素被点击');e.stopPropagation(); // 阻止事件冒泡});
</script>

执行效果:
点击按钮时:

子元素监听器执行 → console.log(‘子元素被点击’) 父元素不会被点击
在这里插入图片描述

由于 e.stopPropagation() 阻止了事件冒泡,父元素监听器不会执行。

点击父元素空白区域时:

只有父元素监听器执行 → console.log(‘父元素被点击’)
在这里插入图片描述

🚦 注意事项

不会影响同一元素上的其他事件:
e.stopPropagation() 只阻止事件冒泡,不会阻止同一元素上的其他事件执行。

不会阻止默认行为:
如果你想阻止默认行为(如表单提交、链接跳转),需要使用 e.preventDefault()。

不会影响事件捕获阶段:
在捕获阶段(从根元素向目标元素传递的过程)e.stopPropagation() 无效。

🚀 总结
使用场景:当你需要阻止事件冒泡,避免父元素的事件触发时。

常用于:模态框、下拉菜单、弹窗等场景,防止点击事件传递到背景元素导致意外关闭

阻止默认行为机制

e.preventDefault()

 <form action=""><input type="text" class="input"><button class="button">提交</button></form>
document.getElementsByClassName('button')[0].addEventListener('click', function(e){if(document.getElementsByClassName('input')[0].value.length<6){alert("长度不够")e.preventDefault()}
})

document.getElementsByClassName(‘button’).addEventListener这样写是错误的
getElementsByClassName 没有直接的 addEventListener 方法
document.getElementsByClassName(‘button’) 返回的是一个 HTMLCollection(类似数组),即使只有一个元素,它也不是单一的元素对象。input也是一样

  • document.getElementById():获取一个
  • document.querySelector():获取一个
  • 其他的都是获取的数组形式
document.getElementsByClassName('button')
console.log(document.getElementsByClassName('button'));
document.getElementsByClassName('input')
console.log(document.getElementsByClassName('input'));

在这里插入图片描述
第二:
按钮 如果不是在表单内,所以它没有默认的提交行为,e.preventDefault() 实际上不会有任何作用。
所以input跟button必须都要被form标签包裹着

http://www.dtcms.com/a/537762.html

相关文章:

  • 2025年内蒙古自治区职业院校技能大赛高职组“软件测试”赛项技能操作样题
  • 无锡建设银行网站网战
  • Java(IO流)
  • 管家婆财贸ERP BB118.付款单单据控制
  • 做男性服装的网站网站首页的快照更新慢
  • 使用Docker安装PandaWiki(AI知识库)
  • JT808,JT1078协议,Java获取音频数据播放时长
  • 国外网站设计风格微信网站页面
  • 免费观看行情软件网站进入专业企业展厅设计公司
  • Hive简介
  • 建网站要自己买服务器吗苏州专业高端网站建设公司哪家好
  • 网站首页布局设计用什么宝塔负载100wordpress
  • Future和CompletableFuture详解
  • 公司网站出现空白页网站建设义乌
  • 高并发视频直播系统源码:从直播架构设计开发到搭建部署上线
  • 做一个跨境电商网站西地那非使用三大忌
  • 网络营销的营销方式是什么广州市网络seo外包
  • 迈诺网站建设专业app制作开发公司
  • 解决报错No module named ‘numpy.exceptions‘
  • Git学习-5
  • 关于Mysql的学习三(事务)
  • hot100面试150——十二周
  • 免费网站模板psd崇明装修公司哪家好
  • 公司做网站的申请上海热点新闻
  • 《Redis 开发与运维》学习笔记[特殊字符]
  • 上海网站建设公司电网页拖拽设计工具
  • cdn网站加速有用吗网页游戏传奇霸主攻略
  • 保护你的创意!让图片拥有盲水印[特殊字符][特殊字符]
  • NEFTUNE
  • 西安优化网站技术徐州市网站开发