2010-12-11 15 views
11

Me pregunto si alguien conoce un complemento o un tutorial sobre cómo activar una información sobre herramientas después de una llamada ajax. Por el momento estoy usando jQuery Tools para crear la información sobre herramientas. Pero no quiero que la información sobre herramientas se active en un evento mouseover; más bien, quiero que se muestren después de una llamada ajax. No puedo encontrar ninguna documentación o ejemplos sobre cómo lograr esto. Por ejemplo:Programar mostrar información sobre herramientas después de una llamada ajax

<a class="vote">Vote</a> 

<div id="tooltip"> 
Some tooltip with a message. 
</div> 

$.ajax({ 
    context: this, 
    dataType: 'json', 
    success: function(response) { 
     if (response.result == "success") { 
// SHOW TOOL TIP HERE 
     } 
     else { 
// SHOW ANOTHER TOOL TIP HERE 
      } 
     }); 

La forma jQuery Herramientas obras es simplemente la unión del elemento a la punta de la herramienta como tal: (pero esto hace que la información sobre herramientas para abrir el mouseOver)

$("#myElement").tooltip(); 

Hay un API con eventos incluidos en las herramientas de jQuery, pero no tengo idea de cómo mostrar solo la información sobre herramientas después del Ajax. Otro factor que complica es que necesito tener la misma información sobre herramientas (o información sobre herramientas múltiples) en múltiples elementos.

Respuesta

4

Aquí hay un ejemplo de cómo mostrar una 'información sobre herramientas' o un diálogo emergente después de algún evento. No ajax aquí, pero solo usando la acción de clic del enlace.

$(document).ready(function() { 

    $("#vote").click(function(evt) { 
     evt.preventDefault(); 

     // Do your ajax 
     // Show the popup 
     $("#tooltip").show(); 
    }); 

    $("#tooltip").click(function() { 
     $(this).hide(); 
    }); 

}); 

http://jsfiddle.net/Tm8Lr/1/

Espero que esto ayude a empezar.

Bob

+0

rcraves. De hecho, tengo la información sobre herramientas para mostrar y ocultar. El único truco es establecer su posición relativa al enlace al que se hace clic. (Tengo múltiples enlaces de voto en la página). – Mohamad

17

¿No funciona simplemente desencadenar el evento mouseover después de vincular la información sobre herramientas?

$('#myElement').tooltip().mouseover(); 
+0

Karim, nunca pensó en que, para ser honesta. Voy a darle una oportunidad. – Mohamad

+0

lo intenté y funciona muy bien. ¡Gracias!tan simple –

+1

¡Eso me salvó el día! : D @ – Entea

5

Tener un vistazo a la tooltip documentation (especialmente el scripting API) y el how their API works.

así que debería funcionar con:

if (response.result == "success") { 
    $('#myElement').data('tooltip').show(); 
} 
else { 
    // don't know which other tooltip you want to show here 
} 

You can also specify at which events the tooltip should be shown (lo que probablemente puede excluir mouseover o cambiarlo a algo que sabes que nunca se activa en ese elemento (como change)).

+0

@felix, buena respuesta, no miré tooltip api, en mi proyecto escribí mi propia información sobre herramientas personalizada, es por eso que di respuesta como esa – kobe

+0

Félix, gracias por la respuesta. Uno de los problemas que no mencioné (hasta que actualicé la pregunta) fue tener varios elementos que requieren la información sobre herramientas. ¿Puede la información sobre herramientas ser reutilizable de todos modos, o tengo que crear una nueva información sobre herramientas para cada elemento? Creo que los datos ('tooltip') solo están vinculados a un elemento. – Mohamad

+0

@mel se puede dar un nombre de clase común a todos los elementos que desee y utilizar eso, que debe arreglar el problema – kobe

1

Mel,

Usted puede escribir su propia información sobre herramientas, información sobre herramientas no son más que las cajas div con diseño personalizado y se sienten y luego una posición absoluta.

Una vez que su ajax completa mostrar la información sobre herramientas de jquerys muestran

$('#tooltipid').show(); 

si desea ocultar después de pocos segundos puede hacer eso también usando jQuery o javascripts setTimeout();

Creo que todo lo que quiere decir, una vez ajax completa usted tiene alguna nueva html en el DOM y quiere mostrar algo de emergente por encima de ese código correcto,

Esperanza esto ayuda

+0

gov, muchas gracias. Pensé acerca de eso. Pero dado que tengo muchos elementos en la página que lo requieren, parece realmente complicado ubicarlo al lado del elemento al que se hace clic. – Mohamad

+0

@Mel eso es bueno, pero creo que se puede utilizar la misma API para hacer un .show() hizo que funcione para usted, gracias – kobe

2

Puede utilizar la función de disparo para iniciar otra función enlazada a mouseover.

$('#ElemWithTootip').trigger('mouseOver'); 
Cuestiones relacionadas