If you have multiple button
element with a similar callback function inside a div
element, you can delegate event listeners to the parent div
element instead of listening to each button.
// poor practice
<div>
<button onclick="myFunction("red")">Red</button>
<button onclick="myFunction("blue")">Blue</button>
<button onclick="myFunction("black")">Black</button>
</div>
// good practice
<div onclick="myFunction(event)">
<button id="red">Red</button>
<button id="blue">Blue</button>
<button id="black">Black</button>
</div>
// script
function myFunction(event) {
let target = event.target;
if (target.nodeName.toLowerCase() !== "button") {
return;
}
// do something with id
...
}
The drawback is that you have to write a bit more code to filter out unnecessary events, but it will drastically increase the performance and provide cleaner code which outweighs the drawback significantly.
Top comments (0)