javascript中的事件冒泡和节流
#javascript #网络开发人员 #编程 #codenewbie

介绍

JavaScript是一种多功能且功能强大的编程语言,允许开发人员创建交互式和动态的Web应用程序。在处理JavaScript中事件和用户互动时经常出现的两个重要概念是事件传播和膨胀。在本文中,我们将以真实的示例探索这些概念,并提供代码以显示其工作原理。

事件冒泡

事件冒泡是JavaScript中的一个基本概念,它是指在元素上发生事件时通过DOM(请求对象模型)传播事件的顺序。当事件发生在单元格元素中时,它不仅会触发该元素,而且会触发dom树的父元素。

示例1:点击事件冒泡

想象每个元素上的元素和事件听众列表。单击元素应将其颜色更改为红色,但您想查看事件中的增加如何影响行为。

<! DOCTYPE html>
<html>
<head>
  <title>Example of event bubble</title>
  <style>
    .item {
      padding: 10px;
      border: 1px solid #ccc;
      border: 5px;
    }
  </style>
</head>
<body>
  <div class="item" id="item1">Item 1</div>
  <div class="item" id="item2">Item 2</div>
  <div class="item" id="item3">Item 3</div>

  <script>
    const element = document.querySelectorAll('.element');

    item.forEach(item => {
      item.addEventListener( 'click', () => {
        item.style.backgroundColor = 'red';
      });
    });
  </script>
</body>
</html>

在此示例中,如果单击“项目1”,它将闪烁红色。但是,由于发生增加,当您单击“项目1”时,这三个项目都会更改颜色。这是因为点击事件传播到主要元素。

节流

坐着是一种用于控制函数执行速度的技术。这可以确保以一定的最大频率调用该函数,而不管事件发射了多少次。

示例2:滚动节流

考虑一个场景,其中您有一个循环事件侦听器,该场景会执行耗时的操作,例如每次用户循环时都会提出API请求。没有提示,此过程可能会变得压倒性并影响性能。

<! DOCTYPE html>
<html>
<head>
  <title>A strong example</title>
  <style>
    body {
      height: 2000px;
    }
  </style>
</head>
<body>
  <p>Scroll down to see the moves. </p>

  <script>
    must be inflated = false;

    function ExpensiveOperation () function
      console.log('Performing expensive operation...');
      // Wait 2 seconds and simulate expensive operation
      setTimeout (() => {
        console.log('Operation completed.');
        thrown = false;
      }, 2000);
    }

    windows.addEventListener( 'scroll', () => {
      if (!thrown) {
        performExpensiveOperation ();
        thrown = true;
      }
    });
  </script>
</body>
</html>

在此示例中,当您向下滚动页面时,每2秒钟就编写“执行昂贵的操作”消息。这样可以防止昂贵的操作在快速周期中连续调用。

结果

JavaScript中的一个重要概念可以显着影响事件程序的行为和功能。了解如何通过DOM传播事件以及如何控制功能执行频率可以帮助您创建更有效的Web应用程序。这里提供的示例应为将这些概念纳入您的JavaScript项目提供坚实的基础。