DOM事件-事件委托-自定义事件

本文详细介绍了DOM事件的发展历程,包括从DOM0级到DOM3级的变化,并探讨了事件模型中的捕获与冒泡机制。此外,还讲解了如何利用事件代理进行代码性能优化,以及如何创建自定义事件来模拟用户操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.dom事件的级别(发展史)

  1. dom0: element.οnclick= function(){}
  2. dom1: (没有规定事件相关内容)
  3. dom2: element.addEventListener(‘click’,function(){})
  4. dom3: element.addEventListener(‘keyup’,function(){})
    除了鼠标点击click事件外,还提供了键盘按压、弹起等类型

2.事件模型

1.捕获 2.冒泡

3.事件流

事件被捕获——>到达目标元素——>事件冒泡上去

4.dom事件捕获的具体流程

window——>document——>html——>body——>父元素——>子元素——>…——>目标元素

5.event对象的常见应用:事件代理/事件委托

作用: 代码性能的优化。不需要每个子元素都循环绑定同一个事件,而是委托给父元素统一处理。根据event.target判断是哪个子元素触发的,再做相应处理

<section class="parent">
        <div class="sibling">1</div>
        <div class="sibling">2</div>
        <div class="sibling">3</div>
        <div class="sibling">4</div>
</section>
<script>
    var parent = document.getElementsByClassName('parent')[0];
    parent.addEventListener('click',function (event) {
        console.log("触发事件的元素");
        console.log(event.target);//点击的某一sibling
        console.log("绑定事件的元素");
        console.log(event.currentTarget);//parent
    })
</script>

6.自定义事件

作用: 模拟用户的操作,比如模拟用户点击某个按钮

<!--自定义事件Event-->
<script>
    var event1 = new Event('myEvent');
    var box = document.getElementsByClassName('event-custom-box')[0];
    box.addEventListener('myEvent',function () {
        console.log('event1');
    })
    setTimeout(function () {
        box.dispatchEvent(event1);
    },1000)
</script>

<!--自定义事件CustomEvent-->
<section class="event-custom-box2">自定义custom事件</section>
<script>

    var event2 = new CustomEvent('myCustomEvent',{detail:{name:'lalaBao'}})
    var box2 = document.getElementsByClassName('event-custom-box2')[0];
    box2.addEventListener('myCustomEvent',function (event) {
        console.log(event.detail.name);//lalaBao
    })
    setTimeout(function () {
        box2.dispatchEvent(event2);
    },1000)

</script>

CustomEvent 和 Event的区别,CustomEvent可以给事件绑定数据,传入对象的detail属性会被绑定到event上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值