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

品质好的办公室装修设计企业整站seo

品质好的办公室装修设计,企业整站seo,网站建设服务费,专业做网站哪家好文章目录 事件委托机制✅ 事件委托的核心原理🔎 为什么使用事件委托?🧑‍💻 事件委托示例⚡ 事件委托的注意事项事件委托不适合的场景: 阻止冒泡机制✅ 具体含义:🧑‍💻 示例解析&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/wzjs/417217.html

相关文章:

  • 成都logo标志设计快速优化工具
  • 建设动态网站的目的青岛seo优化公司
  • 佛山做外贸网站平台正规淘宝代运营去哪里找
  • java做网站的职业舆情网站
  • 分类门户网站系统项目推广方式有哪些
  • 自己做的小网站如何发布软文广告经典案例
  • 热 动漫-网站正在建设中-手机版6淘宝代运营公司排名
  • 日照网站建设哪家好网站建设开发
  • 做网站价格多少网站优化
  • 没有页面的网站怎么做性能测试本站3天更换一次域名yw
  • wordpress公司展示网站模板南京百度关键字优化价格
  • 好的网站制作平台百度竞价账户
  • wordpress加载特效汕头网站优化
  • 东营网站建设报价推广赚钱一个2元
  • 上线了小程序官网登录北京搜索优化排名公司
  • 做网站最下面写什么怎么在百度做免费推广
  • 低价做网站seo引擎搜索网站关键词
  • 加强门户网站建设方案合肥网站维护公司
  • 委托网络公司做的网站侵权新闻发布的网站
  • 高新网站建设哪家好如何点击优化神马关键词排名
  • 个人网站备案材料爱站网ip反查域名
  • 沈阳手机端建站模板短视频运营培训学费多少
  • 新乡做网站优化网络广告图片
  • 长沙别墅图纸网站建设广告关键词查询
  • 网站seo的优化怎么做淘宝关键词排名查询工具免费
  • 两学一做网站视频网站优化方案案例
  • 如何做自己的影视网站品牌推广方案ppt
  • 河北商城网站建设价格湖南长沙seo教育
  • 福田附近网站开发公司网站整站优化公司
  • 网页网站建设的ppt模板下载如何把品牌推广出去