Avoid navigate with href with D3.js
Posted on January 22, 2018 in
1 min read
This might be a dumb post but I like the idea to log even tiny bits of what I learn in my daily routine.
Today a spent a bit of time figuring out how to disable an href HTML link when the same should be controlled by D3.js.
I have a considerable experience with D3.js, nevertheless, sometimes I got stuck on a very basic situation like this one.
I usually handle this stuff with jQuery with the following, well-known, snippet:
$('.mylink').on('click', function(){
// my code here
return false
})
The return false
is the key to stop the default behavior of the browser. The same doesn't work when using D3.
Indeed, D3.js doesn't bind the callback function with the event itself. The this
keyword doesn't represent the event object. You need to use a specific D3 object (d3.event
) to catch it, then, you're able to modify the native event methods, i.e. the preventDefault
method to stop the default browser behavior, such as:
d3.select('.mylink').on('click', function(){
// my code here
var event = d3.event
event.preventDefault()
})
Hope this might save bits of time to some random readers.