I'm going crazy trying to understand why I can show tooltips on regular HTML elements, but not on D3-generated SVGs: http://jsfiddle.net/nachocab/eQmYX/5/
What am I doing wrong?
$(document).ready(function () { $("a").tooltip({ 'placement': 'bottom' }); // this works $("my_circle").tooltip({ 'placement': 'bottom' }); // this does not work });
How To Create a Tooltip. To create a tooltip, add the data-toggle="tooltip" attribute to an element. Note: Tooltips must be initialized with jQuery: select the specified element and call the tooltip() method.
To create a tooltip, add the data-bs-toggle="tooltip" attribute to an element. Note: Tooltips must be initialized with JavaScript to work.
The tooltip plugin generates content and markup on demand, and by default places tooltips after their trigger element.
As you may know, the Twitter bootstrap tooltips are not accessible (I.E. they are not being read by screen readers).
The problem was that the tooltip that Bootstrap v2.2.2 generates is a <div>
that was getting inserted inside the <svg>
, which made the browser not render it.
I ended up using the latest development version of Bootstrap Tooltip, which adds a new parameter to determine the container of the tooltip. Now I can do:
$(".my_circle").tooltip({ 'container': 'body', 'placement': 'bottom' }); // this works!
EDIT - One year later
For the record, I dropped the jQuery requirement and I'm now using the excellent d3-tip by Justin Palmer.
Use d3-bootstrap library. This library will provide you alert, popovers, and tooltip functionalities compatible for D3.js You can add following code to your jsFiddle.
Add this in your head part.
<script src="https://github.com/shawnbot/d3-bootstrap/blob/master/d3-bootstrap.js"/>
Add this in your code part.
d3.selectAll(".my_circle") .call( d3.tooltip().placement("right") );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With