View Full Version : ddimgtooltip: How to change images in tooltip array after they are already defined?

05-07-2012, 08:36 PM
1) Script Title: ddimgtooltip

2) Script URL (on DD): http://www.dynamicdrive.com/dynamicindex4/imagetooltip.htm

3) Describe problem: This script has you place the picture declarations right into the script as follows. I'm having trouble later replacing the images in the tooltips, after they are already defined.

var ddimgtooltip={
var tooltips=[]

//define image tooltips here
tooltips[0]=["http://www.mysite.com/1.jpg", "description 1", {background:"#FFFFFF"}]
tooltips[1]=["http://www.mysite.com/2.jpg", "description 2", {background:"#FFFFFF"}]
tooltips[2]=["http://www.mysite.com/3.jpg", "description 3", {background:"#FFFFFF"}]

return tooltips //do not remove/change this line

tooltipoffsets: [20, -30], //additional x and y offset from mouse cursor for tooltips
tipprefix: 'imgtip', //tooltip ID prefixes
createtip:function($, tipid, tipinfo){
if ($('#'+tipid).length==0){ //if this tooltip doesn't exist yet
return $('<div id="' + tipid + '" class="ddimgtooltip" />').html(
'<div style="text-align:center"><img src="' + tipinfo[0] + '" /></div>'
+ ((tipinfo[1])? '<div style="text-align:left; margin-top:5px">'+tipinfo[1]+'</div>' : '')
.css(tipinfo[2] || {})
return null
positiontooltip:function($, $tooltip, e){
var x=e.pageX+this.tooltipoffsets[0], y=e.pageY+this.tooltipoffsets[1]
var tipw=$tooltip.outerWidth(), tiph=$tooltip.outerHeight(),
x=(x+tipw>$(document).scrollLeft()+$(window).width())? x-tipw-(ddimgtooltip.tooltipoffsets[0]*2) : x
y=(y+tiph>$(document).scrollTop()+$(window).height())? $(document).scrollTop()+$(window).height()-tiph-10 : y
$tooltip.css({left:x, top:y})
showbox:function($, $tooltip, e){
this.positiontooltip($, $tooltip, e)
hidebox:function($, $tooltip){
var tiparray=ddimgtooltip.tiparray
var $targets=$(targetselector)
if ($targets.length==0)
var tipids=[]
var $target=$(this)
$target.attr('rel').match(/\[(\d+)\]/) //match d of attribute rel="imgtip[d]"
var tipsuffix=parseInt(RegExp.$1) //get d as integer
var tipid=this._tipid=ddimgtooltip.tipprefix+tipsuffix //construct this tip's ID value and remember it
var $tooltip=ddimgtooltip.createtip($, tipid, tiparray[tipsuffix])
var $tooltip=$("#"+this._tipid)
ddimgtooltip.showbox($, $tooltip, e)
var $tooltip=$("#"+this._tipid)
ddimgtooltip.hidebox($, $tooltip)
var $tooltip=$("#"+this._tipid)
ddimgtooltip.positiontooltip($, $tooltip, e)
if ($tooltip){ //add mouseenter to this tooltip (only if event hasn't already been added)
ddimgtooltip.hidebox($, $(this))

}) //end dom ready

I'd like to be able to later to dynamically change some or all of the photos in the array. How would I go about doing this?

I tried this in to later change tooltip 3 to image 4, but it does not work:

ddimgtooltip.tiparray[2]=["http://www.mysite.com/4.jpg", "description 4", {background:"##FFFFFF"}]


Any help? Thank you!

05-08-2012, 01:38 AM
jQuery('#imgtip2 img').attr('src', 'http://www.mysite.com/4.jpg');

But of course that won't change the description. For that you could do:

jQuery('#imgtip2 div').eq(1).html('description 4');

Then for the background:


Or, putting it altogether using jQuery's chaining:

.find('img').attr('src', 'http://www.mysite.com/4.jpg').end()
.find('div').eq(1).html('description 4');

05-08-2012, 04:53 PM
Thank you so much for helping! I'm working on your solution and will let you know how it goes. Greatly appreciated!

05-08-2012, 08:20 PM
John, it works perfectly, Thanks again!