You can check if 'ajax-context' data is already set. If so do not trigger the ajax request.
$('p').tooltip({
items: "[data-whatever]",
content: function(){
var el = $(this),
content = el.data('ajax-content');
if(content)
return content;
return 'waiting for ajax';
},
open: function(){
var elem = $(this),
label = elem.data('ajax-content');
if (label) {
elem.tooltip('option', 'content', label);
} else {
var id = elem.data('whatever');
$.ajax('/echo/html/' + id).always(function(res) {
elem.tooltip('option', 'content', res[0].label);
elem.data('ajax-content', res[0].label);
});
}
}
});