2010-12-11 16 views
11

Mi chiedo se qualcuno è a conoscenza di un plug-in o di un tutorial su come attivare un suggerimento dopo una chiamata ajax. Al momento sto usando jQuery Tools per creare i tooltip. Ma non voglio che i tooltip si attivino su un evento mouseOver; piuttosto, li voglio mostrare dopo una chiamata ajax. Non riesco a trovare alcuna documentazione o esempi su come ottenere ciò. Ad esempio:Mostra automaticamente il suggerimento dopo una chiamata 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 
      } 
     }); 

Il modo jQuery Tools opere è semplicemente vincolante l'elemento a punta dell'utensile come: (ma questo provoca la descrizione comando per aprire il mouseOver)

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

C'è un'API con gli eventi inclusi negli strumenti jQuery, ma non ho idea di come mostrare solo il suggerimento dopo l'Ajax! Un altro fattore complicante è che ho bisogno di avere lo stesso suggerimento (o più suggerimenti) su più elementi.

risposta

4

Ecco un esempio di come mostrare un "suggerimento" o una finestra di dialogo popup dopo qualche evento. No ajax qui, ma basta usare l'azione click del link.

$(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/

Spero che questo aiuti a iniziare.

Bob

+0

Grazie a rcraves. In realtà ho il tooltip da mostrare e nascondere. L'unico trucco è quello di rendere la sua posizione relativa al collegamento su cui si fa clic. (Ho più link di voto sulla pagina.) – Mohamad

17

Non funziona semplicemente attivare l'evento mouseover dopo aver vincolato il suggerimento?

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

Karim, non ci avevo mai pensato, a dire il vero. Farò un tentativo. – Mohamad

+0

appena provato e funziona bene. Grazie!così semplice –

+1

Che mi ha salvato la giornata! : D – Entea

5

Date un'occhiata al tooltip documentation (in particolare il scripting API) e il how their API works.

così dovrebbe funzionare 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 (quindi probabilmente possibile escludere mouseover o cambiarlo in qualcosa che si sa non è mai attivato su tale elemento (come change)).

+0

@felix, bella risposta, non ho guardato al tooltip api, nel mio progetto ho scritto il mio tooltip personalizzato, ecco perché ho dato una risposta come quella – kobe

+0

Felix, grazie per la risposta. Uno dei problemi che ho omesso di menzionare (fino a quando non aggiorno la domanda) stava avendo più elementi che richiedono il suggerimento. Il tooltip può essere riusabile in ogni caso o devo creare un nuovo suggerimento per ogni elemento? Penso che i dati ('tooltip') siano legati a un solo elemento. – Mohamad

+0

@mel puoi dare un nome di classe comune a tutti gli elementi che vuoi e usarlo, che dovrebbe risolvere il tuo problema – kobe

1

Mel,

È possibile scrivere il proprio tooltip, tooltip non sono altro che scatole div con look personalizzato e si sentono e quindi assolutamente posizionati.

Una volta che l'ajax completa mostrare il tooltip da jquerys mostrano

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

se si vuole nascondere, dopo pochi secondi, è possibile farlo anche utilizzando jQuery o javascript setTimeout();

Penso che tutto quello che vuoi dire, una volta ajax completa avete qualche nuovo html nel DOM e si desidera mostrare un po 'di pop-up sopra di tale codice giusto,

Spero che questo aiuti

+0

gov, molte grazie. Ci ho pensato. Ma dal momento che ho molti elementi nella pagina che richiedono questo, sembra davvero difficile posizionarlo dopo l'elemento su cui si fa clic. – Mohamad

+0

@Mel è bello, ma penso che tu possa usare la stessa API per fare uno .show() ha funzionato per te – kobe

2

È possibile utilizzare la funzione di innesco per avviare un'altra funzione associata a mouseOver.

$('#ElemWithTootip').trigger('mouseOver'); 
Problemi correlati