I prefer $(this).data(...) to $.data(this, ... Other than that, it looks good.
Ok, one minor thing. I would change: $(this).parent().append("<span>" + title + "</span>"); $("#places ul li span").fadeIn(); to (untested): $("<span>" + title + "</span>").appendTo($(this).parent()).fadeIn(); - Richard On Fri, Dec 5, 2008 at 8:33 PM, Alex Hempton-Smith < [EMAIL PROTECTED]> wrote: > Obviously that code now has the presentational stuff for the tooltip <span> > I create and destroy. > Comments on that code would be great :) This is my first go with > javascript at all so... > > -- Alex > > > > On Sat, Dec 6, 2008 at 1:31 AM, Alex Hempton-Smith < > [EMAIL PROTECTED]> wrote: > >> 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 >>> >>> >> >