stopPropagation 与 stopImmediatePropagation

本文探讨了JavaScript中两个重要的事件处理方法:stopPropagation用于阻止事件冒泡到父元素,而stopImmediatePropagation则进一步阻止当前元素上相同类型事件的后续处理,但不影响其他类型的事件。

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


示例

    <div id="parent">
      parent
      <div id="son">son</div>
    </div>

    <script>
      var parent = document.getElementById("parent");
      var son = document.getElementById("son");

      parent.addEventListener("click", function (e) {
        console.log("===click parent===");
        e.stopImmediatePropagation();
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件1)===");
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件2)===");
      });
    </script>

在这里插入图片描述

stopPropagation 阻止冒泡至父元素

      parent.addEventListener("click", function (e) {
        console.log("===click parent===");
        e.stopImmediatePropagation();
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件1)===");
        e.stopPropagation();  // 阻止冒泡至父元素
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件2)===");
      });

在这里插入图片描述

stopImmediatePropagation 阻止冒泡至当前元素的剩余的相同类型的事件

示例1

      parent.addEventListener("click", function (e) {
        console.log("===click parent===");
        e.stopImmediatePropagation();
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件1)===");
        e.stopImmediatePropagation(); // 阻止冒泡至当前元素的剩余的相同类型的事件
      });

      son.addEventListener("click", function (e) {
        console.log("===click son(事件2)===");
      });

在这里插入图片描述

示例2


    son.addEventListener("mouseenter", function (e) {
    console.log("===mouseenter son(事件1)===");
    e.stopImmediatePropagation(); // 阻止冒泡至当前元素的剩余的相同类型的事件
    });

    son.addEventListener("mouseenter", function (e) {
    console.log("===mouseenter son(事件2)===");
    });

    son.addEventListener("click", function (e) {
    console.log("===click son(事件3)===");
    });

    son.addEventListener("click", function (e) {
    console.log("===click son(事件4)===");
    });

在这里插入图片描述
可见 stopImmediatePropagation 阻止当前元素的剩余的相同类型的事件,不同类型的事件不会被阻止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值