javascript - 如何在特定单击的按钮上添加 addEventListener?

标签 javascript addeventlistener

我想在单击的订单按钮上使用addEventListener()。最有效的方法是什么?这是我现在的做法:

const executeUpdateSummary = (e) => {
  const classNameOfTargetedEl = event.target.className;
  
  if (classNameOfTargetedEl === ('order-button button')) {
    updateOrderSummary(e);
  }
};

const pizzasElement = document.querySelector('.pizzas');
pizzasElement.addEventListener('click', executeUpdateSummary, false);
<div class="pizzas">
  <div class="menu-item">
    <div class="name">
      Margherita
    </div>
    <div class="price">Price: $5</div>
    <div class="toppings">Toppings:
      tomato
      mozzarella
    </div>
    <button class="order-button button" type="button">Add to order</button>
  </div>
  <div class="menu-item">
    <!-- There are multiple menu-items -->
  </div>
</div>

@MTCoster 回答了我正在寻找的内容:

const pizzaButtons = document.querySelectorAll('.order-button');

pizzaButtons.forEach(button => button.addEventListener('click', event => {
    updateOrderSummary(event);
}));

最佳答案

为什么不将事件处理程序直接绑定(bind)到按钮?这样您就根本不需要检查事件处理程序中的类:

const pizzaButtons = Array.from(document.querySelectorAll('.pizzas .order-button'));

pizzaButtons.forEach(btn => btn.addEventListener('click', event => {
  console.log('Updating order summary...');
  console.log('Clicked button:', event.target);
}));
<div class="pizzas">
  <div class="menu-item">
    <div class="name">
      Margherita
    </div>
    <div class="price">Price: $5</div>
    <div class="toppings">Toppings:
      tomato
      mozzarella
    </div>
    <button class="order-button button" type="button">Add to order</button>
  </div><div class="menu-item">
    <div class="name">
      Pepperoni
    </div>
    <div class="price">Price: $7</div>
    <div class="toppings">Toppings:
      tomato
      mozzarella
      pepperoni
    </div>
    <button class="order-button button" type="button">Add to order</button>
  </div>
</div>

关于javascript - 如何在特定单击的按钮上添加 addEventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693716/

相关文章:

javascript - 如何在同一端口上设置 React 应用程序和 API?

javascript - 未捕获类型错误 : Cannot read property 'action' of null with delayed handler

javascript - 如何从 addEventListener 中删除重复项

Javascript 代码在启动时运行一次(addEventListener 不起作用)

javascript - Angularjs 指令从 Controller 中的 ajax 调用获取数据

javascript - 滑动 CSS Javascript 栏

javascript - 从 Javascript 使用 Typescript 模块

Javascript - 加载类的所有元素时的事件监听器

javascript - DOMContentLoaded 仅一次

javascript - DOMContentLoaded 事件中的代码不起作用