Skip to content
Home / Blog / Add an Event Listener to Multi...

Add an Event Listener to Multiple Elements with JavaScript

You might have a number of similar elements on a page and you want to add event listeners to all of them and in some cases you might want to add the same event listener to all the elements. For example, a click event to a bunch of button elements. I’ll show you three ways to do this and each of the methods assumes you’re targeting all <button> elements.

Using a for…of loop

You can use a simple for...of loop:

let btns = document.querySelectorAll('button'); for (i of btns) { i.addEventListener('click', function() { console.log(this); }); }
Code language: JavaScript (javascript)

The key to ensuring the above code works is to reference the clicked button by means of the this keyword. If you try to use the i variable inside the loop, you’ll only have a reference to the last button in the loop, rather than the currently clicked button. It should also be noted that for better memory consumption, you should use a named function instead of the anonymous function, then define the function once elsewhere in the code. The same principle applies to the below examples, which also use anonymous functions.

Using for…of along with an IIFE

Another way to do this is using for...of along with an immediately invoked function that passes the current element in the loop back into the function, so you don’t have the problem inherent in the previous example. This way you can reference the current button using the i variable (or whatever variable name you choose):

let btns = document.querySelectorAll('button'); for (i of btns) { (function(i) { i.addEventListener('click', function() { console.log(i); }); })(i); }
Code language: JavaScript (javascript)

Using forEach()

Another way to do this is using a forEach() loop that correctly adds the listeners and allows immediate access to the current element.

let btns = document.querySelectorAll('button'); btns.forEach(function (i) { i.addEventListener('click', function() { console.log(i); }); });
Code language: JavaScript (javascript)
Note: To the best of our knowledge, the information above and the snippet are accurate and up to date. However, in case you notice something wrong, please report snippet or leave a comment below.
Back to Snippets
Louis Lazaris
Show Comments

Or start the conversation in our Facebook group for WordPress professionals. Find answers, share tips, and get help from other WordPress experts. Join now (it’s free)!

Most Searched Articles

Best JavaScript Libraries and Frameworks: Try These 14 in 2023

In this post, we look at the best JavaScript libraries and frameworks to try out this year. Why? Well, with JavaScript being available in every web browser, this makes it the most accessible programming language of ...

30 Best Free WordPress Themes for 2023 (Responsive, Mobile-Ready, Beautiful)

If you're looking for only the best free WordPress themes in the market for this year, then you're in the right place. We have more than enough such themes for you right ...

12 Best WordPress Hosting Providers of 2023 Compared & Tested

Looking for the best WordPress hosting that you can actually afford? We did the testing for you. Here are 10+ best hosts on the market ...

Handpicked Articles

How to Make a WordPress Website: Ultimate Guide for All Users – Beginners, Intermediate, Advanced

Many people wonder how to make a WordPress website. They’ve heard about WordPress, its incredible popularity, excellent features and designs, and now they want to join the pack and build a WordPress website of their own. So, where does one get ...

How to Start an Ecommerce Business: Ultimate Guide for 2023

Is this going to be the year you learn how to start an eCommerce business from scratch? You’re certainly in the right place! This guide will give you a roadmap to getting from 0 to a fully functional eCommerce business. ...