Anyone? Any help will be appreciated...
On Oct 21, 12:42 am, Gordi <[EMAIL PROTECTED]> wrote: > Hi everyone, > > I'm trying to build a hoverable Jquery tooltip. > This tooltip should appear when I hover over some element, and stay > put if I choose to hover over the tooltip itself too. > The tooltip should disappear only if I hover away from the original > element or from the tooltip body. > > Based on an example I found, I managed to create this behavior, but > since I'm new to Jquery, I'd be glad to hear your comments about > improving the function. > > The code: > --------------------------------------------------------- > > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> > <html xmlns="http://www.w3.org/1999/xhtml"> > > <head> > <script src="jquery-1.2.6.min.js"></script> > <style> > #tooltip{ > position:absolute; > border:1px solid #333; > background:#f7f5d1; > padding:2px 5px; > color:#333; > display:none; > text-align: left; > > } > > </style> > > </head> > <body> > > <script type="text/javascript"> > jQuery.fn.extend({ > 'tooltip': function(text){ > xOffset = 10; > yOffset = 20; > > var that = this; > $(this).mouseover(function(e){ > this.t = text; > $("body").append("<div id='tooltip'>"+ this.t > +"</div>"); > $("#tooltip") > .css('position', 'absolute') > .css("top",(e.pageY - xOffset) + "px") > .css("left",(e.pageX + yOffset) + > "px") > .fadeIn("fast"); > }); > $(this).mouseout(function(){ > that.hide_ff = > setTimeout('$("#tooltip").hidetooltip()', 1000); > $("#tooltip").hover(function(){ > clearTimeout (that.hide_ff); > }, > function(){ > $("#tooltip").hidetooltip() > }); > > //$("#tooltip").hidetooltip() > }); > $(this).mousemove(function(e){ > $("#tooltip") > .css("top",(e.pageY - xOffset) + "px") > .css("left",(e.pageX + yOffset) + > "px"); > }); > }, > > 'hidetooltip': function() > { > var that = this; > $(this).remove(); > if (that.hide_ff) > { > clearTimeout (that.hide_ff); > } > } > > }); > > </script> > <a id="fff">ToolTip</a> > > <div id="tooltip_share_text" style="display:none"> > <div style="width: 100px;"> > This is a Tooltip. > <br/> > <a href="javascript:void(0)" onclick="alert('boo')"> Click Me</a> > </div> > </div> > <script type="text/javascript"> > $(document).ready(function() { > $("#fff").tooltip($('#tooltip_share_text').html());}); > > </script> > > </body> > </html> > > --------------------------------------------------------- > > Two things bother me most: > > 1. I needed to extend Jquery with 2 function (tooltip and > hidetooltip), i would like to achieve the same behavior with only one > extension but I didn't succeed in accomplishing this. > 2. The use I made of "that.hide_ff" just doesn't seem right. Once > again, I think this variable should belong to a "tooltip" object, but > if I am not mistaken it is attached to the Jquery object itself. > > In addition, I would be happy to hear any other improvements... > > Thanks in advance, > Gordi