Events
Listening for events
Events are the backbone to interaction. Something happens, your visualization reacts. This is called listening for an event.
To listen for an event in d3, pull some element(s) with select or selectAll, then use .on to listen for a specific event.
.on('eventname', function() {
// react to the event
})
For example, you might create a bunch of circles, then listen for a click event.
d3.selectAll("circle")
.data(datapoints)
.enter().append("circle")
.on('click', function(d) {
console.log('got clicked');
console.log(d);
})
You might also have a button on the page, and listen for it to be clicked.
d3.select("#some-button")
.on('click', function() {
console.log('got clicked');
// no data
})
Event names
You can find a full list of events over at Mozilla, but you’ll spend most of your time with the following.
| Name | Used for |
click |
Clicking buttons or SVG elements |
mouseover |
A mouse moving over an element |
mouseout |
A mouse moving off of an element |
input |
Typing in an input field |
change |
A checkbox/dropdown/etc was changed. Can also be used with text fields, but input is more inconvenient. |
Note that hover is not an event. It’s a combination of mouseover to set the “hovered” state, then mouseout to set it back to the original state.