event handling in d3js


Event handling in D3.js allows you to add interactivity to your data visualizations by responding to user input such as mouse clicks, mouse movements, and keyboard input.

D3.js provides several methods for adding event listeners to DOM elements, such as on(), dispatch(), and selection.call(). Here's an example using the on() method:

  .on("click", function() {
    // do something when the button is clicked

In this example, we're selecting a button element using d3.select(). We're then adding an event listener to the element using the on() method. The first argument to the on() method is the name of the event to listen for, in this case "click". The second argument is a callback function that will be executed when the event occurs.

You can also use the dispatch() method to trigger an event programmatically, like this:

  .on("click", function() {
    var event = new Event("customEvent");

  .on("customEvent", function() {
    // do something when the custom event is triggered

In this example, we're adding a click event listener to a button element using on(). When the button is clicked, we're creating a new custom event using the Event() constructor. We're then using the dispatchEvent() method to trigger the custom event on the body element. Finally, we're adding a custom event listener to the body element using on().

You can also use the selection.call() method to add event listeners to a selection of elements:

var zoom = d3.zoom()
  .on("zoom", function() {
    // do something when the zoom event occurs


In this example, we're creating a new zoom behavior using d3.zoom(). We're adding a zoom event listener to the behavior using on(). We're then selecting an svg element using d3.select() and adding the zoom behavior to the element using call().