Foros del Web » Programando para Internet » Jquery »

Tooltip tarda en desaparecer con Jquery

Estas en el tema de Tooltip tarda en desaparecer con Jquery en el foro de Jquery en Foros del Web. Hola a todos! Tengo un problema con este código que utilizo para mostrar info en unas tooltips. El tema es que al pasar rápido el ...
  #1 (permalink)  
Antiguo 03/01/2012, 09:29
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Tooltip tarda en desaparecer con Jquery

Hola a todos! Tengo un problema con este código que utilizo para mostrar info en unas tooltips. El tema es que al pasar rápido el mouse, las tooltips aparecen y a veces no desaparecen, se quedan congeladas y la idea es que al hacer un onmouseout automaticamente desaparezcan.

Les muestro un pequeño ejemplo ACA - Tooltips. Pasen rápido el mouse por arriba y van a ver que algunas no desaparecen.

Este es el código que utilizo:

Código:
var ajaxtooltip={
	fadeeffect: [true, 150], //enable Fade? [true/false, duration_milliseconds]
	useroffset: [10, 10], //additional x and y offset of tooltip from mouse cursor, respectively
	loadingHTML: '<div style="text-align:center;"></div>',

	positiontip:function($tooltip, e){
		var docwidth=(window.innerWidth)? window.innerWidth-35 : ajaxtooltip.iebody.clientWidth-35
		var docheight=(window.innerHeight)? window.innerHeight-38 : ajaxtooltip.iebody.clientHeight-35
		var twidth=$tooltip.get(0).offsetWidth
		var theight=$tooltip.get(0).offsetHeight
		var tipx=e.pageX+this.useroffset[0]
		var tipy=e.pageY+this.useroffset[1]
		tipx=(e.clientX+twidth>docwidth)? tipx-twidth-(2*this.useroffset[0]) : tipx //account for right edge
		tipy=(e.clientY+theight>docheight)? tipy-theight-(2*this.useroffset[0]) : tipy //account for bottom edge
		$tooltip.css({left: tipx, top: tipy})
	},

	showtip:function($tooltip, e){
		if (this.fadeeffect[0])
			$tooltip.hide().fadeIn(this.fadeeffect[1])
		else
			$tooltip.show()
	},

	hidetip:function($tooltip, e){
		if (this.fadeeffect[0])
			$tooltip.fadeOut(this.fadeeffect[1])
		else
			$tooltip.hide()
	}

}

jQuery(document).ready(function(){
	ajaxtooltip.iebody=(document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
	var tooltips=[] //array to contain references to all tooltip DIVs on the page
	$('*[@title^="ajax:"]').each(function(index){ //find all links with "title=ajax:" declaration
		this.titleurl=jQuery.trim(this.getAttribute('title').split(':')[1]) //get URL of external file
		this.titleposition=index+' pos' //remember this tooltip DIV's position relative to its peers
		tooltips.push($('<div class="ajaxtooltip"></div>').appendTo('body'))
		var $target=$(this)
		$target.removeAttr('title','<div class="ajaxtooltip"></div>')
		$target.hover(
			function(e){ //onMouseover element
				var $tooltip=tooltips[parseInt(this.titleposition)]
				if (!$tooltip.get(0).loadsuccess){ //first time fetching Ajax content for this tooltip?
					$tooltip.html(ajaxtooltip.loadingHTML).show()
					$tooltip.load(this.titleurl, '', function(){
						ajaxtooltip.positiontip($tooltip, e)
						ajaxtooltip.showtip($tooltip, e)
						$tooltip.get(0).loadsuccess=true
					})

				}
				else{
					ajaxtooltip.positiontip($tooltip, e)
					ajaxtooltip.showtip($tooltip, e)
				}
			},
			function(e){ //onMouseout element
				var $tooltip=tooltips[parseInt(this.titleposition)]
				ajaxtooltip.hidetip($tooltip, e)		
			}
		)
		$target.bind("mousemove", function(e){
			var $tooltip=tooltips[parseInt(this.titleposition)]
			ajaxtooltip.positiontip($tooltip, e)
		})
	})
})
Y lo llamo desde acá:

index.php
Código:
<script type="text/javascript" src="jquery-1.2.2.pack.js"></script>

<style type="text/css">

.ajaxtooltip{
position: absolute; /*leave this alone*/
display: none; /*leave this alone*/
width: 300px;
left: 0; /*leave this alone*/
top: 0; /*leave this alone*/
background: lightyellow;
border: 2px solid gray;
border-width: 1px 2px 2px 1px;
padding: 5px;
}

</style>

<script type="text/javascript" src="ajaxtooltip.js"></script>

..........

// y muestro el tooltip al pasar por arriba de esta manera

<div id="cont-foto" title="ajax:tooltip.php?id_producto='.$registro['id_producto'].'"><a href="rpauto-detalle.php?id_producto='.$registro['id_producto'].'" target="_top"><img src="'.$filename.'" border="0" /></a></div>
Como les decia antes, todo funciona pero muchas veces los tooltips no desaparecen.

¿Me podrían decir por favor que se peude hacer para que SIEMPRE desaparezcan?

Muchas gracias y saludos.
Marx
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 06/01/2012, 09:31
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Tooltip tarda en desaparecer con Jquery

Alguien que sepa de Jquery, ¿me puede dar una mano?

Muchas gracias!
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #3 (permalink)  
Antiguo 06/01/2012, 12:08
Avatar de chicohot20  
Fecha de Ingreso: mayo-2009
Mensajes: 388
Antigüedad: 15 años, 5 meses
Puntos: 43
Respuesta: Tooltip tarda en desaparecer con Jquery

En el mouseout agregale esto: $(".ajaxtooltip").hide();, es una de tantas soluciones:
Código Javascript:
Ver original
  1. ...
  2. function(e){ //onMouseout element
  3. $(".ajaxtooltip").hide();
  4.                 var $tooltip=tooltips[parseInt(this.titleposition)]
  5.                 ajaxtooltip.hidetip($tooltip, e)       
  6.             }
  7. ...

Nos cuentas si te resultó
  #4 (permalink)  
Antiguo 06/01/2012, 21:02
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Tooltip tarda en desaparecer con Jquery

Cita:
Iniciado por chicohot20 Ver Mensaje
En el mouseout agregale esto: $(".ajaxtooltip").hide();, es una de tantas soluciones:
Código Javascript:
Ver original
  1. ...
  2. function(e){ //onMouseout element
  3. $(".ajaxtooltip").hide();
  4.                 var $tooltip=tooltips[parseInt(this.titleposition)]
  5.                 ajaxtooltip.hidetip($tooltip, e)       
  6.             }
  7. ...

Nos cuentas si te resultó
chicohot20: mil gracias por repsonder.

Mejoró bastante a comparación de antes, pero algunas todavía quedan activas al pasar rápido el mouse. Pruébalo desde el link que puse arriba de todo.
Antes de probar has Control+F5 para que no queden los temporales y pruébalo.

Casi casi estaría listo, salvo ese detalle.

Gracias por tu tiempo!
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #5 (permalink)  
Antiguo 07/01/2012, 07:18
Avatar de chicohot20  
Fecha de Ingreso: mayo-2009
Mensajes: 388
Antigüedad: 15 años, 5 meses
Puntos: 43
Respuesta: Tooltip tarda en desaparecer con Jquery

Que tal así? aunque no me parece tan efectiva. El plugin que usas me parece que tiene mucho codigo, no es tan ligero.
Código Javascript:
Ver original
  1. ...
  2. function(e){ //onMouseover element
  3. $(".ajaxtooltip").hide();
  4.                 var $tooltip=tooltips[parseInt(this.titleposition)]
  5.                 if (!$tooltip.get(0).loadsuccess){ //first time fetching Ajax content for this tooltip?
  6.                     $tooltip.html(ajaxtooltip.loadingHTML).show()
  7.                     $tooltip.load(this.titleurl, '', function(){
  8.                         ajaxtooltip.positiontip($tooltip, e)
  9.                         ajaxtooltip.showtip($tooltip, e)
  10.                         $tooltip.get(0).loadsuccess=true
  11.                     })
  12.  
  13.                 }
  14.                 else{
  15.                     ajaxtooltip.positiontip($tooltip, e)
  16.                     ajaxtooltip.showtip($tooltip, e)
  17.                 }
  18.             },
  19.             function(e){ //onMouseout element
  20. $(".ajaxtooltip").hide();
  21.                 var $tooltip=tooltips[parseInt(this.titleposition)]
  22.                 ajaxtooltip.hidetip($tooltip, e)       
  23.             }
  24.  
  25. ...

Última edición por chicohot20; 07/01/2012 a las 07:25
  #6 (permalink)  
Antiguo 07/01/2012, 10:11
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Tooltip tarda en desaparecer con Jquery

chicohot20: ahí lo subí nuevamente. Si, cada vez va mejor... está mejor que lo anterior pero algunas tooltips por ahí no desaparecen, pero va un poco más rápido.

¿Decís que hay algo así como lo que estoy armando pero con menos código que lo harían más rápido todavia? Lo que quisiera es que si paso por arriba que aparezca y si salgo que desaparezca. Que sea automático y que no se queden congeladas.

1000 gracias por tu tiempo y por tus conocimientos para ayudarme.

Abrazo.

Edito: parece que en el Firefox va mejor que en el IE....
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 07/01/2012, 10:22
Avatar de chicohot20  
Fecha de Ingreso: mayo-2009
Mensajes: 388
Antigüedad: 15 años, 5 meses
Puntos: 43
Respuesta: Tooltip tarda en desaparecer con Jquery

En Opera, Chrome, IE8 y Firefox lo veo bien. En IE8 se ve mal el tooltip y se ejecuta un poco lento, pero al final desparecen todos los tooltips.
  #8 (permalink)  
Antiguo 11/01/2012, 17:06
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 22 años, 6 meses
Puntos: 1
Respuesta: Tooltip tarda en desaparecer con Jquery

chicohot20: te agradezco infinitamente tu ayuda. Lo presenté, lo probaron y quedaron conformes.

Gracias, gracias, gracias por tu tiempo!

Saludos.
MArx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Etiquetas: ajax, desaparecer, funcion, html, javascript, js, php, tarda, tooltip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:53.