So you’ve got some tooltip text you want to show your user, but it’s a bit expensive to generate that text and you only really want to go to the bother of generating it when the user invokes the tooltip.
In my situation this was a bunch of numbers on a page, each of which had been calculated by a particularly long and complicated piece of business logic, and the users need to let the page ‘show its working’ now and again. On a busy page, the agreed UI solution was to put the detail into a tooltip, but I didn’t want to have to pre-populate every cell with a tooltip, when the users probably wouldn’t bother looking at it at all, and when they did they’d only be interested in one or two cells. So…
HTML: (on my page this bit is repeated many times)
<span class="tooltip" title="Default tooltip for when the ajax call fails" data-id="${line.someId}">${complicatedNumber}</span>;
jQuery:
$("span.tooltip").tooltip({ content: function( event, ui ) { var element = $( this ); var id = element.attr("data-id"); var tooltiptext = "Default tooltip"; // Non-async ajax is deprecated, but we're using it // here because we need to get the tooltip text // synchronously so that the response is processed // in time. $.ajax({ async:false, dataType: 'text', url:'/tooltip/rest/' + id, type:'get', success: function(response) { tooltiptext = response; } }); return tooltiptext; } });