I am having problem getting my tooltip to work when using the jQuery load() function. The tooltip works fine if i don't use load() to load external dynamic data.

I googled and found the i may need to use live(), but I can't figure how to get it to work. Any suggestion?

thank you!!

Here is my scripts:

function loadEMERContent(uid) {
    $("#ActionEWPNBook").load("ajaxLoadDATA.cfm?uid="+uid, null, showLoading);
    $("#EWPNBookloading").html('<img src="/masterIncludes/images/ajaxLoading.gif" alt="loading" align="center" />');

function showLoading() {


function simple_tooltip(target_items, name){
        $("body").append("<div class='"+name+"' id='"+name+i+"'><p style='padding:5px;'>"+$(this).attr('title')+"</p></div>");
        var my_tooltip = $("#"+name+i);

                my_tooltip.css({opacity:0.8, display:"none"}).stop().fadeIn(400);
                my_tooltip.css({left:kmouse.pageX+15, top:kmouse.pageY+15});

Here is my ajaxLoadDATA.cfm: it returns an unorder list

<li><span title="dynamic title here" class="tipthis">date</span></li>
Was it helpful?


In your callback function, you need to run the tooltip code against the new items, like this:

function showLoading(data) { //data  = the response text, passed from `.load()`
  var items = //get items here, something like $('.giveMeATooltip', data);
  var name = //set name, not sure what you're using for this
  simple_tooltip(items, name);    

One side tip, if you change this line:

 $("body").append("<div class='"+name+"' id='"+name+i+"'><p style='padding:5px;'>"+$(this).attr('title')+"</p></div>");

To something like this:

    $("<div></div>", { 'class': name, 'id': name + i }).append(
        $("<p style='padding:5px;'></p>").text($(this).attr('title'))

Your tooltip generation will be much faster due to how jQuery can cache document fragments for reuse.


I use a modified version of this tooltip. This version uses .live so loaded content will automatically have tooltip functionality. All you need to do is:

  1. Add this script to your main page (adding it as an external file is perferred)
  2. You need to ensure that the elements that need a tooltip have a class="tipthis" and that the tooltip contents are within the title attribute. Also, the tooltip can contain HTML (e.g. <h1>Tooltip</h1>Hello,<br>World).
  3. You will also need some basic CSS:

    #tooltip { background: #f7f5d1; color: #333; padding: 5px; width: 300px; }

Here is the script (using live and it requires jQuery version 1.4+)

/* Tooltip script */
this.tooltip = function(){
 // Defaults
 var tooltipSpeed = 300; // fadein speed in milliseconds
 var xOffset = 20; // Don't use negative values here
 var yOffset = 20;

 $('.tipthis').live('mouseover',function(e) {
  this.t = this.title;
  this.title = '';

  $('<div></div>', {
   id : 'tooltip',
   css: {
    display : 'none',
    position: 'absolute',
    zIndex  : 1000,
    top     : (e.pageY - xOffset) + 'px',
    left    : (e.pageX + yOffset) + 'px'
  .html( this.t )


  this.title = this.t;

   top : (e.pageY - xOffset) + 'px',
   left: (e.pageX + yOffset) + 'px'
$(document).ready(function(){ tooltip(); });

Here is some sample HTML:

<a href="#" class="tipthis" title="This is some tooltip content">Hover over me!</a>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow