From c89ee03333c4d17941379a28dd4c0c318852bf74 Mon Sep 17 00:00:00 2001 From: Brian Cray Date: Fri, 13 May 2011 17:15:01 -0400 Subject: [PATCH] Easier to use ajax for tooltip content --- tooltipsy.min.js | 6 ++++-- tooltipsy.source.js | 23 +++++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/tooltipsy.min.js b/tooltipsy.min.js index 9dae63a..810aba5 100644 --- a/tooltipsy.min.js +++ b/tooltipsy.min.js @@ -10,7 +10,9 @@ * - className: DOM class for styling tooltips with CSS. Defaults to "tooltipsy" * More information visit http://tooltipsy.com/ */ -(function($){$.tooltipsy=function(el,options){var base=this;base.$el=$(el);base.el=el;base.random=parseInt(Math.random()*10000);base.shown=false;base.width=0;base.height=0;base.$el.data("tooltipsy",base);base.init=function(){base.settings=$.extend({},$.tooltipsy.defaults,options);base.$el.bind('mouseenter',function(e){if(base.shown==false){base.shown=true;base.title=base.$el.attr('title')||'';base.$el.attr('title','');base.$tipsy=$('
').appendTo('body').css({position:'absolute',zIndex:'999'}).hide();base.$tip=$('
').appendTo(base.$tipsy).html(base.settings.content!=''?base.settings.content:base.title);if((function(o){var s=0,k;for(k in o){if(o.hasOwnProperty(k)){s++;}} +(function($){$.tooltipsy=function(el,options){var base=this;base.$el=$(el);base.el=el;base.random=parseInt(Math.random()*10000);base.ready=false;base.shown=false;base.width=0;base.height=0;base.$el.data("tooltipsy",base);base.init=function(){base.settings=$.extend({},$.tooltipsy.defaults,options);if(typeof base.settings.content==='function'){base.readify();} +base.$el.bind('mouseenter',function(e){if(base.ready===false){base.readify();} +if(base.shown===false){if((function(o){var s=0,k;for(k in o){if(o.hasOwnProperty(k)){s++;}} return s;})(base.settings.css)>0){base.$tip.css(base.settings.css);} base.width=base.$tipsy.outerWidth();base.height=base.$tipsy.outerHeight();} if(base.settings.alignTo=='cursor'){var tip_position=[e.pageX+base.settings.offset[0],e.pageY+base.settings.offset[1]];if(tip_position[0]+base.width>$(window).width()){var tip_css={top:tip_position[1]+'px',right:tip_position[0]+'px',left:'auto'};} @@ -22,4 +24,4 @@ else if(base.settings.offset[1]==0){return pos.top-((base.height-base.$el.outerH else{return pos.top+base.$el.outerHeight()+base.settings.offset[1];}})(base.$el.offset())];} base.$tipsy.css({top:tip_position[1]+'px',left:tip_position[0]+'px'});base.settings.show(e,base.$tipsy.stop(true,true));}).bind('mouseleave',function(e){if(e.relatedTarget==base.$tip[0]){base.$tip.bind('mouseleave',function(e){if(e.relatedTarget==base.$el[0]){return;} base.settings.hide(e,base.$tipsy.stop(true,true));});return;} -base.settings.hide(e,base.$tipsy.stop(true,true));});};base.init();};$.tooltipsy.defaults={alignTo:'element',offset:[0,-1],content:'',show:function(e,$el){$el.css('opacity','1').show(100);},hide:function(e,$el){$el.fadeOut(100);},css:{},className:'tooltipsy'};$.fn.tooltipsy=function(options){return this.each(function(){new $.tooltipsy(this,options);});};})(jQuery); \ No newline at end of file +base.settings.hide(e,base.$tipsy.stop(true,true));});};base.readify=function(){base.ready=true;base.title=base.$el.attr('title')||'';base.$el.attr('title','');base.$tipsy=$('
').appendTo('body').css({position:'absolute',zIndex:'999'}).hide();base.$tip=$('
').appendTo(base.$tipsy).html(base.settings.content!=''?base.settings.content:base.title);};base.init();};$.tooltipsy.defaults={alignTo:'element',offset:[0,-1],content:'',show:function(e,$el){$el.css('opacity','1').show(100);},hide:function(e,$el){$el.fadeOut(100);},css:{},className:'tooltipsy'};$.fn.tooltipsy=function(options){return this.each(function(){new $.tooltipsy(this,options);});};})(jQuery); \ No newline at end of file diff --git a/tooltipsy.source.js b/tooltipsy.source.js index 4d8899b..bc3282f 100644 --- a/tooltipsy.source.js +++ b/tooltipsy.source.js @@ -18,6 +18,7 @@ base.$el = $(el); base.el = el; base.random = parseInt(Math.random()*10000); + base.ready = false; base.shown = false; base.width = 0; base.height = 0; @@ -26,14 +27,16 @@ base.init = function() { base.settings = $.extend({},$.tooltipsy.defaults, options); + + if (typeof base.settings.content === 'function') { + base.readify(); + } base.$el.bind('mouseenter', function (e) { - if (base.shown == false) { - base.shown = true; - base.title = base.$el.attr('title') || ''; - base.$el.attr('title', ''); - base.$tipsy = $('
').appendTo('body').css({position: 'absolute', zIndex: '999'}).hide(); - base.$tip = $('
').appendTo(base.$tipsy).html(base.settings.content != '' ? base.settings.content : base.title); + if (base.ready === false) { + base.readify(); + } + if (base.shown === false) { if ((function (o) { var s = 0, k; for (k in o) { @@ -100,6 +103,14 @@ }); }; + base.readify = function () { + base.ready = true; + base.title = base.$el.attr('title') || ''; + base.$el.attr('title', ''); + base.$tipsy = $('
').appendTo('body').css({position: 'absolute', zIndex: '999'}).hide(); + base.$tip = $('
').appendTo(base.$tipsy).html(base.settings.content != '' ? base.settings.content : base.title); + }; + base.init(); };