Ah I was just about to post about reading up on .data, here's my current code which works, will look through yours now to see if you do it better!
$("#places ul li a").hover(function() { var title = $(this).attr("title"); jQuery.data(this, "titleText", title); $(this).removeAttr("title") $(this).parent().append("<span>" + title + "</span>"); $("#places ul li span").fadeIn(); }, function() { var title = jQuery.data(this, "titleText"); $(this).next("span").remove(); $(this).attr({ title: title }); }); -- Alex On Sat, Dec 6, 2008 at 1:27 AM, Richard D. Worth <[EMAIL PROTECTED]> wrote: > > On Fri, Dec 5, 2008 at 8:22 PM, Alex Hempton-Smith < > [EMAIL PROTECTED]> wrote: > >> I'm using this code, and the "title" variable is a local variable in the >> hover-over function, and not able to be accessed from the next function - >> therefore my tooltip has no content the next time I hover over: >> $("#places ul li a").hover(function() { >> var title = $(this).attr("title"); >> $(this).removeAttr("title") >> }, function() { >> $(this).attr({ >> title: title >> }); >> }); >> >> (I've removed my custom tooltip code for clarity and I'm just focussing on >> the title stuff here). >> >> Is there any way I could enclose the whole lot in a function and store the >> variable in an enclosing function perhaps? >> > > I recommend using .data(): > > $("#places ul li a").hover( > function() { > var a = $(this); > a.data("title", a.attr("title")).removeAttr("title"); > }, > function() { > var a = $(this); > a.attr({ title: a.data("title") }); > }); > > For more info, see > > http://docs.jquery.com/Core/data > > - Richard > >